PHP/JS 表单类 - 数组与 OO

标签 php javascript oop forms

我最近开始开发 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/

相关文章:

php - Array Unique 在 PHP 中的二维数组中

php - Redis可用性检查

c# - C# 中静态构造函数不能有返回类型,但静态方法必须有返回类型

php - 如何从名为 'ford' 的数据库中选择分类为 'topselers' 的所有产品?

PHP SHA3 功能

javascript - 将预处理器语言添加到 vueify 组件的样式部分会导致构建失败而不会出现错误

javascript - 如何在javascript中将 Canvas 内的图像居中?

javascript - 如何使用jquery删除json字符串中的空值

oop - 一个类中理想的属性/方法数量

oop - 哪些语言不被视为 OOP 语言