我目前正在使用与 Pimple 类似的类来管理依赖注入。例如,如果我想检索依赖于配置类的数据库连接实例,我会这样做:
$DI = new DIContainer;
$DI->Config =
$DI->share = function($c){
return new Config;
};
$DI->Database =
$DI->share = function($c){
$cfg = $c->Config;
$host = $cfg->getDbHost();
$username = $cfg->getDbUsername();
$password = $cfg->getDbPassword();
$name = $cfg->getDbName();
return new \mysqli($host, $username, $password, $name);
};
简单来说:$DI->Config 总是返回相同的配置类实例,$DI->Database 总是返回相同的数据库连接,注入的不是 Config 对象本身,而是对象的几个属性(主机、用户等)。
当然,这意味着必须在运行时设置容器,我正在考虑转移到 Zend Framework 2 的依赖注入容器(它允许传递定义列表)。
但是,我在 Zend\Di\Di 中找不到关于如何注入对象属性而不是对象本身的示例。这可能吗?你知道任何例子吗?