我以这种方式运行控制器
$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 不跟踪它......只是不知道如何完全设置它?