オブジェクト タイプに基づいてさまざまな子クラスをインスタンス化するか、子クラスのメソッドを使用して Base クラスを拡張するアーキテクチャ ソリューションを探しています。
例を挙げると、基本クラス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
}
}
}
ユーザーが持っている役割に応じて、すべてのメソッドを含むオブジェクトを返します。
私の論理がどこかで壊れており、提供した例が間違っていることはわかっています。しかし、私が今見ている唯一の解決策は、すべてのロールのすべてのメソッドを持つ 1 つの巨大なクラスを構築することです。これは混乱しているように見えます。