0

私は非常に長い間レジストリパターンを使用してきました。基本的に、メイン オブジェクトを使用してすべてのクラスをロードし (コントローラー自体が必要としない場合でも)、コントローラーはそれらにアクセスできます。

現在、20 クラスのようにロードされており、アプローチを変更したいと考えています。

コントローラーの依存関係を定義したいと考えています。たとえば、レジ​​スタ コントローラーは、データベース クラス、recaptcha クラス、およびフィルター クラスのみに依存しています。

したがって、次のようなソリューションを作成したいと思います。

//dependencies 
$registerDependencies = array(new Database(), new Recatpcha(), new Filter());

//load register controller
$this->loadController->('register', $this->loadDependencies($registerDependencies));

DI/DIコンテナといいますか?これは現在のシステムよりも優れたアプローチですか?

4

1 に答える 1

0

私はおそらくこのアプローチを使用します:

$this->loadController->register('database.main', 'Database')
                     ->register('database.user', 'Database')
                     ->register('recaptcha', 'Racatpcha');

そして、登録機能は次のようになります

public function register($serviceName, $serviceClass)
{
    // you can inject options to your class via a config array or a conf file
    $this->registry[$serviceName] = new $serviceClass();
}

サービスにエイリアスを指定すると、同じクラスを共有するがパラメータが異なる複数のサービスを持つことができます。サービス「database.main」は DB に接続でき、「database.user」は別の DB に接続できます。

Symfony2 は依存性注入を使用しており、コンポーネントに関するドキュメントを Web サイトで見つけることができます。

于 2013-03-16T17:20:56.143 に答える