在我的App\Providers\RouteServiceProvider
中,我创建了方法register
:
public function register()
{
$this->app->bindShared('JustTesting', function($app)
{
die('got here!');
// return new MyClass;
});
}
我应该在哪里使用它?我确实在App\Http\Controllers\HomeController
中创建了一个方法:
/**
* ReflectionException in RouteDependencyResolverTrait.php line 53:
* Class JustTesting does not exist
*
* @Get("/test")
*/
public function test(\JustTesting $test) {
echo 'Hello';
}
但是没有用,我也不能使用$ this-> app-> make(' JustTesting');
如果我按照下面的代码执行,它可以工作,但我想注入控制器。
/**
* "got here!"
*
* @Get("/test")
*/
public function test() {
\App::make('JustTesting');
}
我应该如何绑定?如果不允许,我为什么要使用bindShared
方法?
答案 0 :(得分:1)
看起来好像你的第一个控制器路由正在抛出一个ReflectionException,因为在IoC Container尝试解析它时,对象JustTesting
实际上并不存在。
此外,您应该编写一个接口代码。绑定JustTestingInterace
到MyClass
将使Laravel知道"好的,当请求JustTestingInterface
的实现时,我应该将其解析为MyClass
。&#34 ;
<强> RouteServiceProvider.php:强>
public function register()
{
$this->app->bindShared('App\Namespace\JustTestingInterface', 'App\Namespace\MyClass');
}
您的控制器内部:
use Illuminate\Routing\Controller;
use App\Namespace\JustTestingInterface;
class TestController extends Controller {
public function test(JustTestingInterface $test)
{
// This should work
dd($test);
}
}