Symfony - Doctrine实体的返回类型

问题描述 投票:1回答:2

从php7开始我们就知道可以声明函数的返回类型。然后,如果该函数返回其他内容,则抛出异常。

现在,当我的Symfony项目中的函数返回一个Doctrine实体时,我想使用这个新功能。所以我试图声明一个这样的函数:

public function getEntity(array $conditions, string $entityClass): ?object
{
    // some logic...
    return $queryBuilder->setMaxResults(1)->getQuery()->getOneOrNullResult();
}

如你所见,它必须返回nullobject变量。然而,似乎object没有按预期工作,因为我有一个例外:

类型错误:HelperBundle的返回值\ MyHelper :: getEntity()必须是HelperBundle \ object的实例或null,返回AppBundle \ Entity \ MyEntity的实例

我实际上不确定这个消息的含义:应该返回的对象派生自位于HelperBundle的类还是什么?

但一般来说,有没有办法在不使用自定义基类或接口的情况下为通用Doctrine实体声明返回类型?

php symfony doctrine
2个回答
4
投票

我刚刚阅读了一篇关于此的文章,并且不支持将返回类型提示作为对象

但是你可以在PHP 7.2中使用:http://php.net/manual/en/migration72.new-features.php


1
投票

为了解决你的第一个问题,我将只说这个声明

public function getEntity(array $conditions, string $entityClass): ?object

由PHP <7.2理解,就像你在object命名空间中声明了HelperBundle类一样。

© www.soinside.com 2019 - 2024. All rights reserved.