사용자 정의 클래스 App/Http/Responder
이 있는데,이 메서드에는 응용 프로그램에서 특정 JSON 응답을 다시 빌드하는 몇 가지 메서드가 있습니다. 컨트롤러를 독립적으로 테스트하려고하므로 생성자를 통해 내 종속성을 주입하려고합니다.컨트롤러에서 IoC 바인딩을 찾을 수없는 Laravel
내 계획은 단순히 서비스 제공을 만들 수 있었다 $app
에 결박 부착하고, 워드 프로세서에 따라, 그것은 자동으로 해결 될 수 있도록 :
public function register()
{
$this->app->bind('responder', function()
{
return new App\Http\Responder($this->app['cache'], $this->app['app'], new JsonResponse, $this->app['config']);
});
}
그때 내 config/app.php
이를 추가 할 수 있습니다.
이제는 내 Responder와 그 종속성이 응용 프로그램에 바인딩됩니다 (responder
).
Responder
를 주입 할 수있을 거라고 생각하고, Laravel 자동으로 IoC 컨테이너에서이 문제를 해결 할 수있을 것입니다 :
class AreasController extends BaseController {
protected $responder;
public function __construct(Responder $responder)
{
$this->responder = $responder;
}
그러나 내가
Class Responser does not exist
를 얻을. 나는 그것이
App::make()
외관을 사용하지 않고, 작업을 얻을 수 있습니다
있는 유일한 방법은, 내 컨트롤러에 응용 프로그램을 주입하는 것입니다 : 다음 $this->app['responder']->method()
을 할 수
use Illuminate\Foundation\Application as App;
class AreasController extends BaseController {
protected $app;
public function __construct(App $app)
{
$this->app = $app;
}
.
분명히 나는 뭔가를 놓치고 있지만, 테스트 할 수 있도록 앱에서 Facades를 사용하고 싶지 않습니다.
고마워요. 이제'Responder' 클래스 생성자에서'__construct ($ cache, $ app, $ response, $ config)'를 실행해야합니다. 왜냐하면'Unresolvable dependency App \ Http \ Responder' 클래스의 [Parameter # 0 [ $ cache]] 해결 중 ... 혼란스러워! –
Alias
IoC 컨테이너가 바인딩을 사용하여 빌드하고 자동으로 구체적인 클래스를 작성하지 못하도록 서비스 공급자를 등록해야합니다. –
아, 어리석은 나는 바인딩의 이름을 바 꾸었습니다! 시간을내어 주셔서 감사합니다! – Alias