【问题标题】:Define dependencies for framework controllers with Pimple使用 Pimple 定义框架控制器的依赖项
【发布时间】:2015-06-07 19:02:19
【问题描述】:

所以我有一个控制器,我添加了它与 Pimple 的依赖项,如下所示:

$this->container['Account'] = $this->container->factory(function ($c) {
    return new Account(
        $c['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'];

但我不确定在框架控制器的情况下将此调用放在哪里。

控制器如下所示:

class Account extends MY_Controller
{
    private $menu_builder;

    public function __construct(Menu_builder $menu_builder){
        $this->menu_builder = $menu_builder;
    }
    // ...
}

问题: 我在这里做错了什么? 以上方法可以很好地返回除控制器之外的任何类。

【问题讨论】:

    标签: php codeigniter dependency-injection frameworks pimple


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2011-06-15
      相关资源
      最近更新 更多