Я работаю над проектом, в котором я пытаюсь реализовать простое внедрение зависимостей.Я реализовал приведенный ниже класс, но не уверен, что это лучший метод или я должен использовать некоторые из контейнеров DI?
Класс контейнеров
namespace App\Includes;
class Container {
private $class=[];
protected $config = [
'user' => 'App\Models\User',
'template' => 'Library\Template',
'database' => 'Library\Database'
];
public function getClass($name) {
if (!isset($this->class[$name])) {
$this->class[$name] = new $this->config[$name]();
}
return $this->class[$name];
}
}
Контроллер
namespace App;
use App\Includes\Container as Container;
class Controller{
protected $template;
protected $database;
public function __construct(Container $container){
$this->database = $container->getClass('database');
$this->template = $container->getClass('template');
}
}
Здесь я запускаю приложение ($ controller предоставляется маршрутизатором)
$container = new App\Includes\Container();
$obj = new $controller($container);