>  기사  >  PHP 프레임워크  >  라라벨의 이벤트와 옵저버에 대해 함께 알아볼까요?

라라벨의 이벤트와 옵저버에 대해 함께 알아볼까요?

藏色散人
藏色散人앞으로
2021-08-13 14:18:122175검색

다음 칼럼에서는 laravel tutorial 칼럼에서 laravel의 이벤트와 관찰자를 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

1: 이벤트 및 리스너

이벤트는 비교적 광범위한 용어로 취해진 작업을 나타낼 수 있습니다. 이벤트와 함께 나타나는 것은 사용자가 수행하는 작업을 모니터링하고 사용자의 행동에 대한 후속 처리를 수행하는 데 사용되는 리스너입니다.
이벤트 시스템은 애플리케이션의 다양한 측면을 분리할 수 있는 훌륭한 방법을 제공합니다. 단일 이벤트에는 서로 독립적인 여러 리스너가 있을 수 있기 때문입니다. 예를 들어 주문이 배송될 때마다 사용자에게 알림을 보낼 수 있습니다. 주문 처리 코드를 알림 코드에 연결하는 대신 수신할 수 있는 이벤트를 작성할 수 있습니다.

이벤트:
Laravel 프레임워크가 이벤트를 생성하려는 경우 다음 명령을 사용하여 이벤트를 생성할 수 있습니다:

php artisan make:event 事件名称

파일은 app/Events 디렉토리에 저장됩니다.

리스너:

리스너 생성은 다음 명령을 사용하여 생성할 수 있습니다:

php artisan make:listener 监听器名称

등록:

이벤트와 리스너가 생성된 후에는 결합해야 합니다. EventServiceProvider 서비스 제공자에 등록할 수 있습니다. 다음과 같습니다:

    protected $listen = [
        事件名称 => [
            监听器名称,
         .
        ],
    ];

Distribution

event(new TestEvent());

둘: 모델 이벤트

모델 이벤트는 모델을 위해 특별히 추가된 추가 기능입니다. 이는 우리를 위해 해당 이벤트와 리스너를 생성합니다. 모델 이벤트를 사용할 때 모델이 제공한 규칙을 준수해야 합니다.

  • retrieved: 모델 인스턴스를 얻은 후 트리거됨
  • creating: 데이터베이스에 삽입하기 전에 트리거됨
  • created: 데이터베이스에 삽입한 후 트리거됨
  • updating: 업데이트됨으로 데이터베이스 이전에 트리거됨
  • updated: 데이터베이스로 업데이트된 후 트리거됨
  • saving: 데이터베이스에 저장되기 전에 트리거됨(삽입/업데이트 전, 삽입 및 업데이트 모두 트리거됨)
  • saved: 데이터베이스에 저장한 후 트리거됨 (삽입/업데이트 후, 삽입/업데이트와 상관없이) 삽입 또는 업데이트 여부에 따라 트리거됨)
  • 삭제: 데이터베이스에서 레코드를 삭제하기 전에 트리거됨
  • 삭제됨: 데이터베이스에서 레코드를 삭제한 후 트리거됨
  • 복원: 복원하기 전에 트리거됨 소프트 삭제된 레코드
  • restored: 소프트 삭제된 레코드를 복원한 후 트리거됨

모델에서 필수 바인딩

protected $dispatchesEvents = [
        'saving' => \App\Events\TestEvent::class,
//        'updated' => \App\Events\TestEvent::class,
];

3: 리스너가 더 많은 경우 관찰자

이벤트를 연결해야 합니다. , 우리는 그것들을 등록하고 구현해야 하는데, 이는 더 번거로울 것입니다. 이때 우리는 관찰자 사용을 고려할 수 있습니다. 모델에서 여러 이벤트를 수신하는 경우 관찰자를 사용하여 이러한 리스너를 별도의 클래스로 구성할 수 있습니다.

관찰자 사용:

관찰자는 다음 명령을 사용하여 생성할 수 있습니다.

php artisan make:observer

모델과 직접 연결하려면 모델과 연결할 매개변수를 직접 추가할 수도 있습니다.

php artisan make:observer UserObserver --model=User

관찰자 등록 :
서비스 제공업체에

User::observe(UserObserver::class);

를 등록하거나 모델에

public static function booted()
{
     self::observe(UserObserver::class);
}

을 등록하세요.

위 내용은 라라벨의 이벤트와 옵저버에 대해 함께 알아볼까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jianshu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제