Symfony1 在symfony中定义小部件的两种不同方式,使用哪种方式?

Symfony1 在symfony中定义小部件的两种不同方式,使用哪种方式?,symfony1,Symfony1,在本教程中,我可以使用: public function configure() { $this->setWidgets(array( 'type' => new sfWidgetFormChoice(array( 'choices' => Doctrine_Core::getTable('Gender')->getTypesForForm(), 'expanded' => false,

在本教程中,我可以使用:

public function configure() {
    $this->setWidgets(array(
    'type' => new sfWidgetFormChoice(array(
                'choices' => Doctrine_Core::getTable('Gender')->getTypesForForm(),
                'expanded' => false,
                'multiple' => false,
    ))
));


    $this->widgetSchema['type'] = new sfWidgetFormChoice(array(
                'choices' => Doctrine_Core::getTable('Gender')->getTypesForForm(),
                'expanded' => false,
                'multiple' => false,
            ));
}
定义一个小部件

我想知道我应该用哪一种,为什么有两种写作方式


谢谢

它们是等价的;setWidgets()更干净:它不假设$this->widgetSchema是一个数组(直接访问$this->widgetSchema会破坏封装),另外,它允许您一次设置多个小部件。

我猜“cleaner”是主观的:-)我喜欢能够按照小部件显式分组进行小部件设置(例如->setDefault(),->setLabel()):-)我在“封装”中的意思是“更干净”-如果在下一个版本中,$this->widgetSchema不再是数组(例如成为对象),$this->widgetSchema['something']=$somethingelse将中断。