я запускаю контроллер таким образом
$controller = $this->getContainer()->get($class);
$controller->{$method}(...array_values($vars));
теперь внутри контроллера мне нужно использовать модели
если я попытаюсь автопроводить модель, как
class MyClass extends Controller
{
public function doSmth(myModel $myModel)
{
$myModel->getAll());
}
}
Я получаю ошибку о неправильных типах параметров.
Методы контроллера не всегда должны использовать какую-либо модель, и из-за этого модели должны быть созданы внутри методов.
хорошо, тогда я пытаюсь
создать модель напрямую
class MyClass extends Controller
{
public function doSmth()
{
$myModel = new myModel();
$myModel->getAll());
}
}
но я получаю проблему, что мне нужен экземпляр контейнера внутри модели (например, для настройки соединения с БД, и эти настройки зарегистрированы в контейнере).
я мог бы передать экземпляр контейнера из контроллера в модель следующим образом:
class MyClass extends Controller
{
public function doSmth()
{
$myModel = new myModel($this->container);
$myModel->getAll());
}
}
но я должен был бы делать это каждый раз, когда мне нужна какая-то модель, и это ужасно ...
Я новичок в php-di. я знаю, что когда я создаю экземпляр внутри метода, DI не отслеживает его ...
просто не знаете, как это установить?