我最近开始开发 PHP/JS 表单类,其中还将包含 SQL 表单构建器(例如,从 sql 构建简单表单和自动插入/更新)。
我已经尝试了几个类(zend_form、clonefish、PHP Form Builder Class、phorms 等),但到目前为止还没有遇到一个简单、可定制且完整的完整解决方案(服务器端和客户端验证,涵盖所有简单的 html 元素和大量 dhtml 元素:排序、所见即所得、多文件上传、日期选择器、ajax 验证等)
我的问题是为什么有些“类”通过数组实现元素,而其他“类”则通过正确的 OO 类调用实现元素。
例如。 Clonefish(流行的商业php类): $config = Array(
'username' => Array(
'type' => 'inputText',
'displayname' => 'Username',
validation => Array(
Array(
'type' => 'string',
'minimum' => 5,
'maximum' => 15,
),
),
));
$clonefish = new clonefish( 'loginform', 'test.php', 'POST' );
$clonefish->addElements( $config, $_POST );
然后是其他人,例如。 Zend_Form
$form = new Zend_Form;
$username = new Zend_Form_Element_Text('username');
$username->addValidator(new Zend_Validate_Alnum());
$form->addElement($username);
我意识到 Zend_Form 可以通过类似于 clonefish 的数组传递元素,但为什么要这样做?
有什么好处吗?这似乎让事情变得更加复杂,尤其是在使用像 Komodo 这样的合适的 IDE 时。
任何想法都会受到赞赏,因为我不想走得太远,并意识到使用数组添加元素有很大的好处(尽管这并不是一个需要添加的任务)。
干杯
最佳答案
My question is why do some "classes" implement elements via an array and others via proper OO class calls.
为了方便。它不那么冗长,感觉不像编码,而更像配置,并且您不需要对 API 有那么深入的了解。
顺便说一句,您之所以还没有遇到一个简单、可定制且完整的完整解决方案,是因为它并不简单。表单、它们的验证和渲染很复杂,特别是如果您希望将其定制用于任何目的。 ZF 的表单组件是一个很好的示例,说明如何正确解耦和分离所有关注点以获得最终的可扩展表单构建器(包括通过 Zend_Dojo 或 ZendX_Jquery 的客户端代码)。但它们也是实现这一点所需的复杂性的一个很好的例子。即使有方便的数组配置,让它们屈服于你的意愿也是非常困难的,特别是当你需要偏离默认配置和渲染时。
关于PHP/JS 表单类 - 数组与 OO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3519952/