我有一个基本的域对象,比如由数据库中的单个表表示的 Person 或 Campaign 或 Event。但是,我也有这些对象的更复杂版本,例如 PersonCampaign 或 PersonEvent 甚至是理论上可以扩展基础对象之一的 CampaignEvent。
然而,由于多种原因,这变得复杂,因为 PHP 不支持多重继承(例如 PersonEvent 扩展 Person 或 Event)。并且还因为一些域对象实际上是具有不同属性和功能的工厂对象(例如,事件实际上是按电子邮件、电话、传真等事件类型的子类)。
我能看到的最简单的解决方案是根据从数据访问层返回的数据来更改对象的实际性质。
有没有人有更好的方法来处理这个问题?或者创建可以根据数据访问层当前可用的内容更改属性和行为的统一域对象是否正确?