我制作了一个简单的PHP脚本,它会生成一个html表单。 该脚本由两部分组成,即表单和表单元素。
现在,当我需要表格时,我可以这样做:
$form = new Form();
$checkbox = new Checkbox();
$checkbox->setLabel('Label');
$checkbox->setData('data');
$form->addElement($checkbox);
$textarea = new Textarea();
$textarea->setData('data');
$radio = new Radio();
$form->addElement($textarea);
$form->addElement($radio);
事情是,当我有一个包含许多不同元素的大型表单时,我的模型或控制器有很多use语句,指向不同的表单元素。
我对OOP很新,但人们告诉我,很多依赖都是不好的做法。
限制这些依赖关系的最佳方法是什么?
我应该创建另一个包含所有表单依赖项的类,并使用此类只有一个依赖项,还是有更好的方法呢?
由于
答案 0 :(得分:1)
怎么样......
class Form
{
...
public function add($element)
{
...
return $this;
}
}
class Checkbox extends FormElement
{
...
public function __construct($data = null, $label = null)
{
...
}
}
现在你可以:
$form = new Form();
$form
->add(new Checkbox('data', 'Label'))
->add(new Textarea('data'))
->add(new Radio('data'));
或者您可以查看Symfony的表单组件(http://symfony.com/doc/current/book/forms.html,https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Form,http://webmozarts.com/bsc-thesis.pdf)。
Symfony的方法是使用“tags”,表示表单元素实例的字符串名称(实现接口以确保某些方法),因此您可以通过配置更改这些依赖项。
好吧,看来你喜欢它!然后你必须实现一种表单管理器来按名称获取实例,祝你好运!