Symfony - Doctrine 实体的返回类型
Posted
技术标签:
【中文标题】Symfony - Doctrine 实体的返回类型【英文标题】:Symfony - Return type for Doctrine entity 【发布时间】:2018-06-03 20:24:08 【问题描述】:从 php7 开始,我们已经知道可以声明函数的返回类型。然后,如果该函数返回其他内容,则会引发异常。
现在我想在我的 Symfony 项目中的一个函数返回一个 Doctrine 实体时使用这个新功能。所以我尝试声明一个这样的函数:
public function getEntity(array $conditions, string $entityClass): ?object
// some logic...
return $queryBuilder->setMaxResults(1)->getQuery()->getOneOrNullResult();
如您所见,它必须返回 null
或 object
变量。但是,object
似乎没有按预期工作,因为我遇到了异常:
类型错误:返回值 HelperBundle\MyHelper::getEntity() 必须是 HelperBundle\object 的实例或 null,AppBundle\Entity\MyEntity 实例返回
我实际上不确定这条消息的含义:返回的对象应该派生自位于HelperBundle
的类还是什么?
但一般来说,有没有一种方法可以在不使用自定义基类或接口的情况下为通用 Doctrine 实体声明返回类型?
【问题讨论】:
投反对票到底是什么? 【参考方案1】:我刚刚阅读了一篇关于此的文章,不支持将返回类型提示作为对象
但是,您可以在 PHP 7.2 中: http://php.net/manual/en/migration72.new-features.php
【讨论】:
您在“或空”部分略有错误。可空类型在 php 7.1 中引入,参见 php.net/manual/ru/migration71.new-features.php。【参考方案2】:为了回答你的第一个问题,我只想说这个声明
public function getEntity(array $conditions, string $entityClass): ?object
被 PHP HelperBundle 命名空间中声明了 object
类。
【讨论】:
我依赖于 PhpStorm,因为它没有给出任何错误,所以我认为它已经可以从 php 7.1... 我的错:\以上是关于Symfony - Doctrine 实体的返回类型的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2/Doctrine:如何从实体类中持久化一个实体?
FOSUserBundle 在 EasyAdminBundle 中管理((“用户”实体必须使用“类”选项定义其关联的 Doctrine 实体类))Symfony
如何使用doctrine查询symfony2中实体类中的另一个实体
Symfony4 / Doctrine,如何选择“不同”的对象? getResult() 返回字符串数组,而不是对象数组