【发布时间】:2018-12-20 09:55:29
【问题描述】:
我正在使用教义创建我的第一个更大的项目,到目前为止,我又爱又恨!
我不明白的是: 为什么实体处于无效状态完全可以?
我的意思是,当然,您可以使用验证器来检查实体是否有效(例如,在持久化之前),但如果它甚至不可能处于无效状态,那不是更好吗?
class Author
{
/**
* @Assert\NotBlank
*/
public $name;
}
恕我直言,这应该是不可能的:
$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)时才有效,不是吗?
-
什么以及更重要的何时会检查实体?每次实体改变?
-
不,实际上是在更改之前,因为如果实体在更改后处于无效状态,则应拒绝“更改”。
标签: php symfony validation doctrine-orm