【发布时间】:2010-03-24 01:31:01
【问题描述】:
我正在开始一个新项目并建立工作基础。有几个问题出现了,我可能会在这里问很多,希望我能找到一些答案。
第一步是处理对象的依赖关系。我决定使用依赖注入设计模式,我对它有点陌生,为应用程序处理所有这些。
在实际编码时,我遇到了一个问题。如果一个类有多个依赖项,而您想通过构造函数传递多个依赖项(这样在实例化对象后就无法更改它们)。
如何在不传递依赖数组的情况下使用 call_user_func_array()、eval() 或 Reflection 来做到这一点?这就是我要找的:
<?php
class DI
{
public function getClass($classname)
{
if(!$this->pool[$classname]) {
# Load dependencies
$deps = $this->loadDependencies($classname);
# Here is where the magic should happen
$instance = new $classname($dep1, $dep2, $dep3);
# Add to pool
$this->pool[$classname] = $instance;
return $instance;
} else {
return $this->pool[$classname];
}
}
}
再次,我想避免调用类的最昂贵的方法。还有其他建议吗?
另外,我如何访问类内部的 DI 类,例如,在需要访问不同模型的控制器中?我应该静态调用它还是将它传递给每个需要它的类?我认为最后一个想法是不可行的。
谢谢大家。
【问题讨论】: