바인드 방법에 대해: - 이 두 바인딩은 동일하며 $app->make()일 때 둘 다 새 바인딩을 반환합니다. 예
$this->app->bind('App\DAO\UserDAO',function(){
return new UserDAOImpl();
});
$this->app->bind('App\DAO\UserDAO','App\DAO\Impl\UserDAOImpl');
로그인 후 복사
- bind는 별칭도 설정할 수 있습니다. 다음과 같이 첫 번째 매개변수가 배열에 전달되고 키는 별칭이고 값은 값입니다. 인터페이스 이름은
$this->app->bind(['dao.user' => 'App\DAO\UserDAO'],'App\DAO\Impl\UserDAOImpl');
로그인 후 복사
- 세 번째 매개변수가 true입니다. 이는 싱글턴의 효과가 동일함을 의미합니다.
$this->app->bind(['dao.user' => 'App\DAO\UserDAO'],'App\DAO\Impl\UserDAOImpl', true);
로그인 후 복사
Command Bus는 기본적으로 관련 메서드에 대한 호출 모음입니다.
- Command를 생성합니다
php artisan make:command FirstCommand
로그인 후 복사
이때 appCommands 하위에 FirstCommand 클래스가 생성됩니다. 핸들 메소드는 IoC를 지원하는 특정 실행 내용입니다.
- Call Command
를 통해 Controller에서 Dispatch 메소드를 호출하는 방법은 다음과 같습니다. 기본 Controller에는
`trait DispatchesCommands`가 있으므로 디스패치 메서드가 있습니다. 컨트롤러에서 다음 명령이 실행되면 FirstCommand::handle()의 내용이 실행됩니다
$this->dispatch(new FirstCommand());
로그인 후 복사
- 큐 명령
php artisan make:command BuyPodcast --queued이
`--queued` 매개변수는
`IlluminateContractsQueueShouldBeQueued` 인터페이스와
`SerializesModels를 추가합니다. ` 특성. 이 인터페이스에는 메서드가 없고 마커(instanceof)만 있습니다.
- 파이프라인 명령(TODO)
이벤트 이벤트 - 이벤트 클래스 생성
`EventServiceProvider`이벤트 이름과 핸들러 이름을 청취 속성에 추가합니다. 예를 들어
protected $listen = [
'App\Events\FirstEvent' => [
'App\Handlers\Events\FirstEventHandler',
],
];
로그인 후 복사
`php artisan event:generate` $listen의 내용은 해당 파일을 생성하며 이미 생성된 파일을 덮어쓰지 않습니다. -
이벤트 처리이벤트 등록은 부팅 시
`EventServiceProvider`
에서 완료됩니다. Hanlder의 핸들 메소드는 FirstEvent 매개변수를 승인하며 핸들은 처리 메소드입니다. -
트리거 이벤트 <span style="white-space:pre"> </span>\Event::fire(new FirstEvent());
//or use the helper function
event(new FirstEvent());
로그인 후 복사
-
큐 이벤트 +
`IlluminateContractsQueueShouldBeQueued`
그냥 동시에 `IlluminateQueueInteractsWithQueue`
특성을 사용하여 $this->release(30);
$this->delete();
로그인 후 복사
및 기타 방법을 사용하여 이벤트 처리 중에 작업을 삭제하거나 재설정할 수 있습니다.
-
구독자구독자는 기본적으로 핸들러이며 구독($event) 메소드를 구현해야 합니다.
class ThirdEventHandler {
/**
* Create the event handler.
*
* @return void
*/
public function __construct()
{
//
}
public function doSomething(){
echo " ThirdEventHalder !!!..";
}
public function doSomethingToo(){
echo "lalala, ThirdEventHalder again!!!..";
}
/**
* 注册监听器给订阅者。
*
* @param Illuminate\Events\Dispatcher $events
* @return array
*/
public function subscribe($events)
{
$events->listen('App\Events\FirstEvent', 'App\Handlers\Events\ThirdEventHandler@doSomething');
$events->listen('App\Events\FirstEvent', 'App\Handlers\Events\ThirdEventHandler@doSomethingToo');
}
}
로그인 후 복사
구독 방법은?
$subscriber = new App\Handlers\Events\ThirdEventHandler();
Event::subscribe($subscriber);
// or rely on IoC
Event::subscribe('App\Handlers\Events\ThirdEventHandler');
로그인 후 복사
완료되었습니다.
이벤트는 여러 핸들러에 해당할 수 있으며 핸들러의 실행 순서는 바인딩 순서와 일치합니다.
구독자는 여러 이벤트를 바인딩할 수 있습니다.
위 내용은 관련 내용을 포함하여 Laravel5의 컨테이너, 명령 버스, 이벤트를 소개한 내용이므로 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.