>  기사  >  백엔드 개발  >  Laravel5의 컨테이너, 명령 버스, 이벤트 정보

Laravel5의 컨테이너, 명령 버스, 이벤트 정보

WBOY
WBOY원래의
2016-08-08 09:24:431652검색
바인드 방법에 대해:
- 이 두 바인딩은 동일하며 $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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.