【发布时间】:2011-07-21 13:22:01
【问题描述】:
我正在尝试通过injection dependence 设置我的 php(Zend 框架)项目。到目前为止,当我实例化一个模型时,我会像这样将table 和view(数据库视图)传递给我的模型:
$table = new My_Table();
$view = new My_View();
$model = new My_Model($table, $view);
我所有的模型都扩展了一个相同的类,该类负责表单与模型交互的构造、消息处理和 getter。
现在我必须将model 注入model,并且我正在寻找一种被动的静态方式来执行此操作。在我的模型的父类中,我添加了一个静态方法inject,它在应用程序引导程序中被调用。我以key => value 的形式传递了两个字符串,其中键是必须在模型中创建的变量的名称,值是表示要实例化的类的字符串。
My_Model::inject('dependentModel', 'My_Other_Model')
当我尝试通过以下代码将密钥用作新成员变量时,就会出现问题:
protected function _initDependency()
{
$this->_table = null;
foreach (self::$_staticDependency as $key => $dependency) {
$varName = '_' . $key;
$this->{$$varName} = new $dependency();
}
}
我收到以下消息
Notice: Undefined variable: _dependentModel
如果知道我想创建模型而不知道它们的依赖关系,那么实现这一目标的最佳方法是什么?
【问题讨论】:
-
$this->{$varName} = new $dependency();
标签: php zend-framework dependency-injection