Php 定义具有Pimple的框架控制器的依赖项

Php 定义具有Pimple的框架控制器的依赖项,php,codeigniter,dependency-injection,frameworks,pimple,Php,Codeigniter,Dependency Injection,Frameworks,Pimple,因此,我有一个控制器,我添加了它的依赖项和丘疹,如下所示: $this->container['Account'] = $this->container->factory(function ($c) { return new Account( $c['Menu_builder'] ); }); class Account extends MY_Controller { private $menu_builder; public

因此,我有一个控制器,我添加了它的依赖项和丘疹,如下所示:

$this->container['Account'] = $this->container->factory(function ($c) {
    return new Account(
        $c['Menu_builder']
    );
});
class Account extends MY_Controller
{
    private $menu_builder;

    public function __construct(Menu_builder $menu_builder){
        $this->menu_builder = $menu_builder;
    }
    // ...
}
当我转到该控制器中任何操作的URL时,它只会说:

Message: Argument 1 passed to Account::__construct() must be an instance of Menu_builder, none given, called in website/system/core/CodeIgniter.php on line 482 and defined Filename: controllers/Account.php Line Number: 13
要加载任何具有依赖项的类,我通常会说:

$account = $this->container['Account'];
但是我不确定在框架控制器的情况下把这个调用放在哪里

控制器如下所示:

$this->container['Account'] = $this->container->factory(function ($c) {
    return new Account(
        $c['Menu_builder']
    );
});
class Account extends MY_Controller
{
    private $menu_builder;

    public function __construct(Menu_builder $menu_builder){
        $this->menu_builder = $menu_builder;
    }
    // ...
}
问题: 我做错了什么?
上述操作可以很好地返回除控制器以外的任何类。

在执行
$account=$this->container['account']
之前,您可能没有为
$c['Menu\u builder']赋值。在实例化Account类之前,请尝试将控制器分配给Menu\u builder。

在执行
$Account=$this->container['Account']之前,您可能没有将值分配给
$c['Menu\u builder']
。在实例化Account类之前,尝试将控制器分配给菜单生成器