誰かが別のクラスインスタンスの引数内にクラスインスタンスを持つことの意味を説明できますか?
$controller = new controllerObject(new dependenciesObject());
クラスとクラスインスタンスの基本は理解していますが、上記のようなコードはこれまで見たことがありません。どういう意味ですか?controllerObectはクラスですが、引数でオブジェクトインスタンスを渡すとはどういう意味ですか?
これはすべて、controllerObject
コンストラクターがタイプのオブジェクトを受け入れることを意味しますdependenciesObject
。
をインスタンス化しdependenciesObject
、それを引数として使用して、controllerObject
に割り当てられているをインスタンス化します$controller
。理解に役立つ場合、これは次と同等です。
$dependency = new dependenciesObject();
$controller = new controllerObject($dependency);
unset($dependency);
あなたがしているのは、$controllerにcontrollerObjectのインスタンスを割り当てることです。
あなたが言ったように、controllerObjectは:dependenciesObjectタイプのオブジェクトへの参照を必要とするコンストラクターを持つクラスです。
class controllerObject
{
function __construct(dependanciesObject $dependancies)
{
//etc
}
}
controllerObject
これは、が別のオブジェクトをコンストラクターに渡すことを意味します。このようにすることdependenciesObject
で(別の変数でインスタンス化する代わりに)、渡されたオブジェクトのグローバル変数を作成せず、グローバル変数の数を最小限に抑えます。
例として、データベースオブジェクトがないと機能できないcontrollerObject
場合にデータベースオブジェクトをに渡すことができます。controllerObject
new controllerObject(5)
たとえば、他の引数をコンストラクターに渡すのと同じです。
理解に役立つ場合は、一時変数を使用してください。
$dependencies = new dependenciesObject();
$controller = new controllerObject($dependencies);