0
私は自分のクラスの依存性の注入を使用します。依存性注入どのようにクラスのインスタンスが作成されますか?
どのようにPHPがここにオブジェクトのインスタンスを作成しない
class FeedFetcher {
protected $cache;
function __construct(Cache $cache) {
$this->cache = $cache;
}
}
を:私は
new Cache()
がない場合
function __construct(Cache $cache) { $cache->method(); }
を、なぜそれが動作しますか?なぜ私は$cache->method();
と呼んでも、キャッシュのインスタンスを作成できないのですか?
class FeedFetcher {
protected $cache;
function __construct(Cache $cache) { $cache->method(); }
}
// create a Cache object
$c = new Cache;
// pass Cache object to constructor of FeedFetcher
$f = new FeedFetcher($c);
それが生成されます、あなたがタイプCache
のオブジェクトを渡さない場合:
メソッドが「静的」である場合、メソッドを呼び出すことができます。 http://php.net/manual/en/language.oop5.static.php –
なぜか: '__construct(Cache new $ cache)'を参照してください。 – ITMANAGER
依存性注入がこのように動作しないため、原因(新しい$ cache)は、クラスを拡張するか、または特性を使用するのに最適です。 –