0

我正在学习 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
  • 文本文件什么的...

谢谢

4

2 回答 2

0

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

如果您想以最简洁的方式进行 OOP,您可以创建一个工厂(工厂模式)并返回一个新的 Form 对象,其中包含可用于构造表单的正确字段。使接口的所有这些项称为IFormObject或类似,并提供对这些功能的访问。

粗略的方法,只需制作一个表单对象并将逻辑封装在其中,然后根据请求对象(用户、管理员等)填充表单数据

于 2013-07-10T07:57:43.640 回答
0

如果我确实正确理解了您的问题,我宁愿做相反的事情。我的意思是,我会创建一堆不同的用户(管理员、用户、客户端等),这些用户具有受限的属性集,并结合了从父类继承的属性,以及特定于该类别的有限数量的特殊属性。

然后,我将创建我的每个对象并在数据库上使用特定标志查看关于读取/写入或执行它所需的访问级别(在网络上它将在编辑模式、只读模式或根本不显示它) .

我现在知道这可能不是您正在等待的答案,而是我做一个更灵活和可维护的应用程序的方式。

于 2013-07-10T07:59:31.870 回答