Эта статья похожа на мои потребности, но мне больше интересно узнать о конкретном решении, и если это хорошая или плохая идея сделать это. Совместное использование объектов между классами PHP
Скажем, как и в приведенной выше ссылке, у меня есть объект, который я хочу передать нескольким классам, скажем, объект $ db.
Вместо использования внедрения зависимостей и передачи его в конструктор каждого метода, будет ли хорошей идеей позволить всем классам расширять класс Base , который хранит объект $ db как свойство?
Например:
abstract class Base {
protected static $_db;
public function setDatabase( Database $db ) {
$this->_db = $db;
}
public function getDatabase() {
return $this->_db;
}
}
class SomeClass extends Base {
public function doStuff() {
$result = $this->getDatabase()->query(.....);
}
}
Это означало бы, что все классы, которые расширяют Base , не должны беспокоиться о получении / проверке / установке $ db сами, так как они уже будут иметь этот объект как свойство, как только класс будет определен.
Я знаю, что внедрение зависимостей - это обычный путь, но действительно ли это когда-либо жизнеспособное решение?
Спасибо!