我在自己的课堂上使用依赖注射:
class FeedFetcher {
protected $cache;
function __construct(Cache $cache) {
$this->cache = $cache;
}
}
PHP如何在此创建对象实例:
function __construct(Cache $cache) { $cache->method(); }
如果我没有new Cache()
,为什么会有效?为什么我可以调用$cache->method();
无法创建缓存实例?
答案 0 :(得分:0)
Cache $cache
是Type declaration或类型提示,声明在创建Cache
对象时必须传递FeedFetcher
的实例:
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
类型的对象,则会产生错误:
致命错误:未捕获的TypeError:传递给FeedFetcher()的参数1必须是Cache的实例,none / null /其他给定的。