我正在学习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:
存储多个表单字段的最佳方式是什么?
由于
答案 0 :(得分:0)
您可以将这些字段提取到某种管理它们的表单类。基于请求对象(例如,用户或管理员等),它返回一组不同的表单。
如果您想要执行OOP,最简洁的方法是创建工厂(工厂模式)并返回一个新的Form对象,其中包含可用于构造表单的正确字段。制作名为IFormObject
或类似界面的所有这些项目,并提供对这些功能的访问。
粗略地说,只需创建一个表单对象并将逻辑封装在那里,然后根据请求对象(用户,管理员等)填充表单数据。
答案 1 :(得分:0)
如果我确实理解你的问题,我宁愿做相反的事情。 我的意思是,我会创建一组不同的用户(管理员,用户,客户端等),其中包含一组受限制的属性,以及来自父类的继承属性,以及特定于该类别的有限数量的特殊属性。
然后,我将创建我的每个对象并使用数据库上的特定标志查看有关读/写或执行它所需的访问级别(在Web上,它将在编辑模式下进行筛选,是否为只读模式在所有)。
我现在认为这可能不是你要等待的答案,而是我的方式来做一个更灵活和可维护的应用程序。