存储大量对象属性

时间:2013-07-10 07:51:46

标签: php forms class oop architecture

我正在学习OOP PHP并且在课程设计方面有一点问题。

我有一个User类,它将包含基本用户字段(邮件,个人信息等...)

自定义用户类型的一些子类(用户,管理员,客户端......)。

这些子类具有“formFields”属性。它是一个包含表单所需的所有字段的数组。

示例:

 array('user_mail' => array('label' => 'E-mail', 
                            'name' => 'user[user_mail]', 
                            'required' => 1), 
       'js' => 'some custom script', 
       classes => 'css classes', 
       etc...);

根据子类类型会有很多表单和很多字段......

我不确定最好的方法。

将这些字段存储在对象中很简单,但开始很难维护。 (每次我执行var_dump时,我都会得到一个填充了相同属性的页面......)

我不认为为每个表单创建一个数据库表是个好主意,因为它有多个版本的形式。

我可以为所有表单中的所有字段创建一个单独的数据库,但是不会使用很多表字段...(或者序列化它们?这有点奇怪吗?)

我没有看到很多解决方案,也许有人知道什么是最好的......

TL / DR:

存储多个表单字段的最佳方式是什么?

  • 数组作为对象属性
  • 多个表格
  • 一张大桌子
  • XML
  • 文字档案或其他内容......

由于

2 个答案:

答案 0 :(得分:0)

您可以将这些字段提取到某种管理它们的表单类。基于请求对象(例如,用户或管理员等),它返回一组不同的表单。

如果您想要执行OOP,最简洁的方法是创建工厂(工厂模式)并返回一个新的Form对象,其中包含可用于构造表单的正确字段。制作名为IFormObject或类似界面的所有这些项目,并提供对这些功能的访问。

粗略地说,只需创建一个表单对象并将逻辑封装在那里,然后根据请求对象(用户,管理员等)填充表单数据。

答案 1 :(得分:0)

如果我确实理解你的问题,我宁愿做相反的事情。 我的意思是,我会创建一组不同的用户(管理员,用户,客户端等),其中包含一组受限制的属性,以及来自父类的继承属性,以及特定于该类别的有限数量的特殊属性。

然后,我将创建我的每个对象并使用数据库上的特定标志查看有关读/写或执行它所需的访问级别(在Web上,它将在编辑模式下进行筛选,是否为只读模式在所有)。

我现在认为这可能不是你要等待的答案,而是我的方式来做一个更灵活和可维护的应用程序。

相关问题