Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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
Php 条令/符号-强制有效实体状态_Php_Symfony_Validation_Doctrine Orm - Fatal编程技术网

Php 条令/符号-强制有效实体状态

Php 条令/符号-强制有效实体状态,php,symfony,validation,doctrine-orm,Php,Symfony,Validation,Doctrine Orm,我正在用教义创建我的第一个更大的项目,到现在为止,我又爱又恨 我不明白的是: 为什么实体处于无效状态完全可以 class Author { /** * @Assert\NotBlank */ public $name; } 我的意思是,当然,您可以使用验证器来检查实体是否有效(例如,在持久化之前),但是如果它甚至不可能处于无效状态,这不是更好吗 class Author { /** * @Assert\NotBlank */

我正在用教义创建我的第一个更大的项目,到现在为止,我又爱又恨

我不明白的是: 为什么实体处于无效状态完全可以

class Author
{
    /**
     * @Assert\NotBlank
     */
    public $name;
}
我的意思是,当然,您可以使用验证器来检查实体是否有效(例如,在持久化之前),但是如果它甚至不可能处于无效状态,这不是更好吗

class Author
{
    /**
     * @Assert\NotBlank
     */
    public $name;
}
IMHO不应执行以下操作:

$author = new Author();
因为这会导致实体无效。 是的,您可以这样做:

class Author
{
    /**
     * @Assert\NotBlank
     * @var string
     */
    public $name;

    public function __construct( string  $name )
    {
        $this->setName($name);
    }


    /**
     * @param string $name
     * @throws \Exception
     */
    public function setName(string $name)
    {
        if($name ==''){
            throw new \Exception('name must be set');
        }        
        $this->name = $name;
    }

}
但是,这个断言有什么好处,对吗


那么,我是错过了什么,还是就是这样?

哦,上帝。我已经谈过了。太糟糕了

不过,我非常同意您的观点,如果您的输入数据在实体中不好,那么抛出异常并没有什么错

此外,对我来说,教义对这种用法没有限制。事实上,贫血模型在官方理论文件中有记录。所以是的,理论支持非贫血模型并不明显。但多亏了时代的变迁


我想“解决”你的问题,但我看不到任何问题。我希望我给出了您期望的结果。

说清楚,这与表单验证有效状态无关?什么是有效状态?何时应检查此状态?在这种情况下,仅当名称不为空(@Assert\NotBlank)时实体才有效,否?何时检查实体更重要?每次实体更改?不,实际上是在更改之前,因为如果实体在更改后处于无效状态,则应拒绝“更改”。