我正在寻找基于对象类型实例化不同子类或使用子类的方法扩展基类的架构解决方案。
举个例子:有一个基类User和几个子类Partner,Client,Moderator,它们具有特定的方法和自己的构造函数。当我打电话时
$user = new User($userid);
我想要用户类
class User
{
public function __construct($userid) {
self::initDB();
if ($this->isPartner()) {
//extend this class with the methods of "Partner" child class and run "Partner" class constructor
}
if ($this->isClient()) {
//extend this class with the methods of "Client" child class and run "Client" class constructor
}
if ($this->isModerator()) {
//extend this class with the methods of "Moderator" child class and run "Moderator" class constructor
}
}
}
根据用户拥有的角色返回一个包含所有方法的对象。
我知道我的逻辑在某处被破坏了,我提供的示例是错误的。但我现在看到的唯一解决方案是构建一个包含所有角色的所有方法的巨型类——这看起来像一团糟。