私は小さなフレームワークを持っていて、このようにコーディングしました。それが依存性注入と呼ばれるかどうかはわかりません。デザインパターンのようなものかどうかはわかりません。$this
また、paramとして渡すことが悪い習慣であるかどうかもわかりません。
これを見てください。(実際の例ではありません。説明のためにこれらのコードをブラウザーに書き込んだだけです。)
/* This is engine model */
require_once('Database.class.php');
require_once('Image.class.php');
require_once('Misc.class.php');
require_once('BBCode.class.php');
class FrameWork_Engine_Model
{
public $database, $config, $misc, $bbcode, $controller, $image;
function __construct($config)
{
$this->database = new Database($configParams);
$this->image = new Image($this);
$this->misc = new Misc($this);
$this->bbcode = new BBCode($this);
$this->controller = new Controller($this); //here I call Register controller depending on routing, in this case, register controller.
}
...
}
/* This is register controller */
class Register extends Base_Controller
{
/*I can access anything over Engine Model in my controllers */
$this->engine->database->query(); //I access database model
$this->engine->bbcode->tag('you'); //I access bbcode model
$this->engine->image->sanitizeUploadedFile(); //I access image model
//etc. I can access others models like this.
}
基本的に、私のコントローラーはエンジンモデルを介して任意のモデルにアクセスできます。同様に、私dependency injection is all about injecting dependencies into controllers?
のレジスタコントローラが機能するには、データベースモデル、ルーティングモデル、およびテンプレートモデルが必要だと思います。ここにそれが依存するすべてがあります。私は間違っていますか?
そうは言っても、私の質問は次のとおりです。
有効な依存性注入の例ですか?そうでない場合、それは何ですか?デザインパターンに名前はありますか?
依存性注入とは何の関係もない場合、DIになるためにどのような変更を行う必要がありますか?
$this
新しく作成されたクラスにパラメーターを渡すことは悪い習慣ですか?もしそうなら、なぜですか?
追伸 トピックで3つの質問をすることは、stackoverflowが好きなことではないことは知っていますが、テキスト全体をコピーして貼り付けて質問したくありません。