我正在学习使用 Symfony2,在我阅读的文档中,与 Symfony 表单一起使用的所有实体都有空的构造函数,或者根本没有。(例子)
http://symfony.com/doc/current/book/index.html第 12 章
http://symfony.com/doc/current/cookbook/doctrine/registration_form.html
我对构造函数进行了参数化,以便在创建时需要某些信息。似乎 Symfony 的方法是将强制执行留给验证过程,本质上依赖元数据断言和数据库约束来确保对象被正确初始化,放弃构造函数约束来确保状态。
考虑:
Class Employee {
private $id;
private $first;
private $last;
public function __construct($first, $last)
{ .... }
}
...
class DefaultController extends Controller
{
public function newAction(Request $request)
{
$employee = new Employee(); // Obviously not going to work, KABOOM!
$form = $this->createFormBuilder($employee)
->add('last', 'text')
->add('first', 'text')
->add('save', 'submit')
->getForm();
return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
}
我不应该使用构造函数参数来做到这一点吗?
谢谢
编辑: 在下面回答