1

Core()いくつかの初期化に応じて、さまざまなクラスのインスタンスを提供するクラスがあるとします。それを開始した後、いくつかのクラスを取得し、それをインスタンス化したいと言います。これが私がすることです:

$core = new Core();
// $core is further initiated
$api = $core->getClass(); // This returns, for instance class Library_MyClass
$class = new $api();

最後の 2 つのステップを 1 つにまとめる方法はありますか? たとえば、私は次のようなことを言います$class = new $core->getClass()()か?明らかに私が書いたことは間違っていますが、それは私が望んでいることのようなものです! それは可能ですか?

4

2 に答える 2

0

依存性注入の使用から利益を得たいと思うかもしれません(PeeHaa の例に適用されたわずかな更新を考慮して)

class Core
{
    public function getClass($api)
    {
        return new $api();
    }
}

$core = new Core();
$apiInstance = $core->getClass('Library_MyClass');

Coreこの方法では、別のライブラリ クラスのインスタンスを提供する必要がある場合に、クラスを更新する必要はありません。

于 2013-08-31T17:07:43.740 に答える