0

PHP で、オブジェクトが自分自身を自分の子クラスの 1 つに変換することは可能ですか?

class Children1 extends Parent {
    // the children
}

class Parent {
    public function loadChildConfiguration($type){
        select($type){
            case 1: self::MAGICALLY_TRANSFORM_INTO(Children1); break;
            case 2: self::MAGICALLY_TRANSFORM_INTO(Children2); break;
            // etc...
        }
    }
}

$foo = new Parent();    // foo is a Parent
$foo->loadChildConfiguration(1);    // foo is now a Children1

今のところ、私が持っていた唯一のアイデアは、新しいコンストラクターとして親に静的クラスを作成することでした

class Parent {
    public static constructByType($type){
        select($type){
            case 1: $class = Children1; break;
            case 2: $class = Children2; break;
            // etc...
        }
        return new $class;
    }
}

$bar = Parent::constructByType(1);    // bar is a Children1

親の作成後に子クラスを取得する必要がない限り、これは機能するはずです。

作成後にオブジェクトを子に変更する方法はありますか? 新しいメソッドとパラメータを既存のオブジェクトにロードする別の「よりクリーンな」方法があるのではないでしょうか?

4

1 に答える 1