Вы можете попробовать:
class Foo {
/**
* @var PDO
*/
private $_adapter = null;
public function __construct(PDO $adapter = null) {
if (!$adapter) {
// assuming you have your generated DI container set there
$this->_adapter = Zend_Registry::get('diContainer')->getDatabase();
} else {
$this->_adapter = $adapter;
}
}
}
Вы также можете сделать это другими подобными способами, например, реализовать setAdapter (адаптер PDO $).Ну, в любом случае, вы поняли идею.Или вы можете просто использовать это так:
public function __construct() {
// assuming you have your generated DI container set there
$this->_adapter = Zend_Registry::get('diContainer')->getDatabase();
}
Есть несколько способов сделать это хорошим способом, зависит от того, как вы действительно хотите, чтобы все было.Основные довольно приятные варианты:1. Внедрить через конструктор + в конструкторе (если не указано как параметр конструктора)2. вводить в конструктор только через DI-контейнер3. вводить отдельным методом4. зависит от того, что вы делаете / хотите сделать, может просто взять зарегистрированный сервис через DI-контейнер и просто использовать его, не сохраняя его в классе.(пример:Zend_Registry :: получить ( 'diContainer') -> getDatabase () -> подготовить ( '>> << SQL');</p>