Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带条令的类型提示:当使用PHP7.4进行类型提示时,@ORM\Column注释上仍然需要Type属性吗?_Php_Symfony_Doctrine Orm_Type Hinting_Php 7.4 - Fatal编程技术网

带条令的类型提示:当使用PHP7.4进行类型提示时,@ORM\Column注释上仍然需要Type属性吗?

带条令的类型提示:当使用PHP7.4进行类型提示时,@ORM\Column注释上仍然需要Type属性吗?,php,symfony,doctrine-orm,type-hinting,php-7.4,Php,Symfony,Doctrine Orm,Type Hinting,Php 7.4,的条令文档说明需要type属性。PHP7.4是否仍然适用?在PHP中直接使用类型提示时,我觉得注释中的type属性是多余的。有没有一种方法不提供type属性,而让我们从PHP类型提示中推断出来 示例: 而不是使用这个代码 class Client { /** @ORM\Column(name="code" , type="string" , length=20 , unique=true) */ private string $code;

的条令文档说明需要type属性。PHP7.4是否仍然适用?在PHP中直接使用类型提示时,我觉得注释中的type属性是多余的。有没有一种方法不提供type属性,而让我们从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;
    // [...]
如果没有,这一特点是否在讨论中?或者是否有办法提出建议?

原则类型是。甚至像
string
这样的简单PHP类型在数据库中也可以是VARCHAR、DECIMAL或CLOB

类型提示也可以是对象:

private UuidInterface$id;
如何将其存储在数据库中?字符串,二进制,整数


Doctrine不了解您的应用程序业务逻辑,因此我认为反射并不能很好地替代注释。

当前版本的Doctrine(2.7)运行在PHP7.1上,因此它不知道类型属性。您可以查看github站点,了解第3条原则的计划。我一直没有跟踪,但我怀疑7.4不是目标,因此没有类型属性。但我可能错了。它也可以取物业的名字,但这不是重点。此外,条令类型中还有更多对应于string/float/integer的类型,因此它仍然必须是有条件的或默认选择。ORM是一个映射器,这是定义映射的地方之一。即将发布的Doctrine版本(3.0)基于PHP7.2+。但这并不意味着它必须忽略PHP7.4提供的可能性-它也可以很好地用于推断可用的类型,因此“基于PHP7.2+”属性在我看来并没有真正的帮助。顺便说一句,“它也可以从属性中取名称”已经起作用。实际上没有回答这个问题。更重要的是,条令有自己的类型映射系统,通常选择合理的默认值。例如,一个非常常见的条令属性是“string”。不知何故,即使您不提供更详细的需求,条令也能很好地工作。当条令最终支持类型化属性时,将UuidInterface之类的东西映射到guid列将是明智之举。继续Uuid:你说的没错。然而,尽可能地默认是一件非常好的事情(并且已经实现了)。沿着这条思路,通过?int和?bool推断int、bool等类型,尤其是nullable=“true”将非常有帮助。对于类来说,推理是比较困难的,我告诉你,但是int和bool是非常非常常见的类型,所以这将涵盖大部分代码。