【发布时间】:2020-11-10 23:26:01
【问题描述】:
@ORM\Column 的原则文档说类型属性是必需的。这仍然适用于 PHP 7.4 吗?直接在 PHP 中使用类型提示,我觉得注释中的类型属性是多余的。有没有办法不提供类型属性并让教义从 PHP 类型提示中推断出来?
示例:
不使用此代码
class Client
{
/** @ORM\Column(name="code" , type="string" , length=20 , unique=true) */ private string $code;
/** @ORM\Column(name="moduleX", type="boolean", nullable=true ) */ private ?bool $moduleX;
// [...]
我想写以下内容:
class Client
{
/** @ORM\Column(name="code" , length=20, unique=true) */ private string $code;
/** @ORM\Column(name="moduleX", ) */ private ?bool $moduleX;
// [...]
如果没有,是否正在讨论该功能 - 或者有什么方法可以推荐它?
【问题讨论】:
-
当前版本的 Doctrine (2.7) 在 PHP 7.1 上运行,所以不,它不知道类型属性。您可以查看 github 站点并查看 Doctrine 3 的计划。我没有跟踪,但我怀疑 7.4 不是目标,因此没有类型属性。但我可能是错的。
-
它也可以从属性中获取名称,但这不是重点。还有更多类型对应于学说类型中的字符串/浮点数/整数,因此它仍然必须是有条件的或默认选择。 ORM 是一个映射器,它在这个映射被定义的地方之一。
-
即将推出的 Doctrine 版本 (3.0) 基于 PHP 7.2+。但这并不意味着它必须忽略 PHP 7.4 提供的可能性——它也可以在可用时很好地推断类型,因此在我看来“基于 PHP 7.2+”属性在这里并没有真正帮助。
-
顺便说一句 “它也可以从属性中获取名称” 确实有效。
标签: php symfony doctrine-orm type-hinting php-7.4