警告:这个问题是Laravel 4的具体问题.
我之前一直在我的控制器中使用Facades.因此我知道代码正在运行.现在我需要出于各种原因引入依赖注入.
重构控制器后,我得到以下错误:
Illuminate\Container\BindingResolutionException
无法解析的依赖项解析[参数#0 [$ name]].
我无法弄清楚问题出在哪里.错误消息对我来说似乎很神秘,我不明白.(我没有看到我的__constructor
参数有任何问题,因为我已经注册了绑定HelpersInterface
)
以下是我的代码的重要部分:
文件:app/start/global.php
文件:composer.json
// ... "autoload": { // ... "psr-0": { "Acme": "app/" } }, // ...文件:app/Acme/Controllers/BaseController.php
app = $app; $this->carbon = $carbon; $this->view = $view; $this->helpers = $helpers; $lang = $this->app->getLocale(); $now = $this->carbon->now(); $this->view->share('lang', $lang); $this->view->share('now', $now); } /** * Missing Method * * Abort the app and return a 404 response * * @param array $parameters * @return Response */ public function missingMethod($parameters = array()) { return $this->helpers->force404(); } }文件:app/Acme/Services/Helpers.php
文件:app/Acme/Providers/HelpersServiceProvider.php
db = $this->app['db']; $this->defaultDbConnection = $this->db->getDefaultConnection(); } public function register() { $this->init(); $this->app->bind('helpers', function () { return new Helpers( $this->app['config'], $this->app['translator'], $this->app['view'], $this->app['mockably'], $this->app->make('log')->getMonolog(), $this->app['request'], $this->app['session.store'], $this->db->connection($this->defaultDbConnection), $this->app['redirect'], $this->app['Illuminate\Support\Facades\Response'] ); }); }
Joseph Silbe.. 20
看起来您的
Acme\Services\Helpers
构造函数接受一个$name
参数,但不是类型提示.Laravel的IoC并不神奇.如果您没有为每个参数提供类型提示,则IoC容器无法知道要传递的内容.
看起来您的Acme\Services\Helpers
构造函数接受一个$name
参数,但不是类型提示.
Laravel的IoC并不神奇.如果您没有为每个参数提供类型提示,则IoC容器无法知道要传递的内容.