如何指定特定类需要 setter 注入的接口实现?我有一个工作,例如用于构造函数注入,但不适用于二传手。
class Lister1 {
public $finder;
public function setFinder(Finder $finder){
$this->finder = $finder;
}
}
interface Finder {
public function findAllByName($name);
}
class FinderImpl1 implements Finder {
public function findAllByName($name) {}
}
现在对于上面的以下代码有效。
$di = new Di();
$di->instanceManager()->addTypePreference(
'Finder',
'FinderImpl1'
);
$lister = $di->get('Lister1');
但是,如果我也有以下内容怎么办
class Lister2 extends Lister1{
}
class FinderImpl2 implements Finder {
public function findAllByName($name) {//assume a different impl}
}
所以 Lister1 需要注入 FinderImpl1 而 Lister2 需要注入 FinderImpl2。
我们可以在每个类的基础上添加类型偏好吗?
我查看了 zf2 附带的单元测试,但没有发现任何问题。