我正在尝试掌握条令实体及其继承模型。以下是我想要的一些建议;我有一个基类Box
,根据应用程序的不同,其他几个类可以扩展Box
类(STI),例如:TextBox
、ImageBox
、SliderBox
等。PortraitBox
可以扩展ImageBox
,等等。
获得扩展Box
的所有类的列表(以自动方式)的最佳方式是什么?例如,如果应用程序的用户需要选择要创建的框,或者管理员需要选择对某些用户应可编辑的所有框,等等
在UI填充的情况下,有没有用类名填充UI元素的替代方案?
我建议您在配置文件中定义所有可能的值。这样一来,您就不必实现复杂的自动发现,一旦需求发生变化,它就会失败,您甚至可以提供其他信息。考虑这个例子:
boxes.yml
boxes:
text:
class: "MyFQCNToTextBox"
displayName: "Text Box"
editableBy: ["admin", "editor"]
image:
class: "MyFQCNToImageBox"
displayName: "Image Box"
editableBy: ["admin", "photographer"]
...
现在,您只需要实现域逻辑,这样您的应用程序就可以理解配置文件。别忘了在某个地方记录不同的配置可能性。
如果您需要动态访问控制,那么:使用二级标识符(例如text
或image
)作为密钥来识别数据库中的框并分配权限。无论UI和实际实现如何,这些都是唯一的内部名称。