Я пытаюсь настроить свой проект php (Zend Framework) через injection dependence
. До сих пор, когда я создавал модель, я передавал table
и view
(представление базы данных) моей модели следующим образом:
$table = new My_Table();
$view = new My_View();
$model = new My_Model($table, $view);
Все мои модели расширяют один и тот же класс, который заботится о построении, обработке сообщений и методах получения форм для взаимодействия с моделью.
Теперь мне нужно ввести 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
Каков наилучший способ добиться этого, зная, что я хочу создавать свои модели, игнорирующие их зависимости?