1

私は現在、OOP の原則に基づいて何かを作成しており、依存性注入を適用しようとしています。私はここで何か間違ったことをしている可能性があることを認識しています.DI全体はおそらくそれよりも混乱しているようですが、まだ頭を悩ませています.

さまざまなフォーム要素を出力する Form クラスを作成しましたが、フォーム クラスが正しく機能するには、少なくとも 2 つの他のクラス (オブジェクトとして作成) が必要です。

これが私がそれを手に入れた方法です:

$config = new Config();
$db = new Database();
$html = new HTML();

$form = new Form($config, $db, $html);

これは私が遊んでいるだけなので、フォームはこれらすべてを必要としないかもしれませんが、要点を説明するためにそれらを使用しています。

ここで、フォームを作成するときに、フォームを使用するために 3 つのオブジェクトを渡す必要はありません。これは静的メソッドなどで解決できますが、実際には行きたい道ではありません。

Form クラスで以前に作成した 3 つのオブジェクトを使用できるようにする最善の方法は何でしょうか?

ある程度、ほぼグローバルなタイプの動作が必要だと思います。

これと工場、IoCコンテナなどについて話していることがいくつか見つかりましたが、それを明確かつ簡単に説明したものは何もないので、これに関する助けは素晴らしいでしょう. または、わかりやすいチュートリアルへのリンクなど、自分で見つけられなかったものもあります。

Pimple も見つけました。

4

1 に答える 1

3

3 つのオブジェクトを渡さなければ、依存性注入を行っていません。

パラメータを再び回避するには、Wrapper クラス、またはフォーム オブジェクトを作成して返すメソッドを持つファクトリ クラスのいずれかを記述します。rhe ファクトリ クラスを$config, $db, $html1 回初期化してから、作成されたすべてのフォームにそれを使用できます。

したがって、プロセスは次のようになります。

$factory= new Factory($config, $db, $html);
$form= $factory->createForm();
于 2013-05-03T12:31:01.043 に答える