[수시 업데이트] 라벨의 이벤트 & 청취자 사용을 시도해 보도록 하겠습니다.
참고 자료
메서드 1 EventeServiceProvider의 listen 등록 메서드
1-1 이벤트 및 청중 만들기
먼저 app/Providers/EventServiceProvider에 다음과 같은 이벤트와 청취자를 등록하였습니다.
EventServiceProvider.php
protected $listen = [
'App\Events\greetEvent' =>[
'App\Listeners\greetEventLister'
]
];
artisan 명령 실행php artisan event:generate
이 성공하면 다음과 같이 표시됩니다.Events and listeners generated successfully!
추가php artisan event:list
면 현재 앱에 등록된 이벤트와 청중을 확인할 수 있습니다.1-2 구현 이벤트
greetEvent.php
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class greetEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public $greet;
public function __construct($greet)
{
$this->greet = $greet;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
1-3 청중 설치
greetEventListener.php
<?php
namespace App\Listeners;
use App\Events\greetEvent;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class greetEventLister
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param greetEvent $event
* @return void
*/
public function handle(greetEvent $event)
{
dd($event->greet);
}
}
1-4 점화 이벤트
디렉터 내에서 다음 이벤트가 발생합니다.
//省略
event(new greetEvent('こんにちは!'));
//省略
greet Event에 불이 났을 때 이에 대응하는greet Evente Listener의handle을 실행한다.방법2 이벤트 할인 활용
번역 후 이벤트 발견!알기 쉽다.뭐랄까, 이벤트서비스Provider의 $listen 배열에는 이벤트와 청중이 등록되지 않아도 이벤트와 청중을 사용할 수 있습니다.
php artisan make:event greetEvent2
php artisan make:listener greetEvent2Listener
이벤트를handle로 지정하는 매개 변수greetEvent2Listener
<?php
namespace App\Listeners;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use app\Events\greetEvent2;
class greetEvent2Listener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(greetEvent2 $event)
{
//
}
}
그런 다음 Event Service Provider에서 should Discover Events를 다시 작성합니다.이렇게 하면 자동으로 Listeners 디렉토리를 검색하고 이벤트 및 청취자를 등록할 수 있습니다.EventServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
// Registered::class => [
// SendEmailVerificationNotification::class,
// ],
// 'App\Events\ItemEvent' => [
// 'App\Listeners\ItemEventLister'
// ],
'App\Events\greetEvent' =>[
'App\Listeners\greetEventLister'
]
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
//
}
public function shouldDiscoverEvents()
{
return true;
}
}
php artisan event:list
에 등록되었는지 확인할 수 있습니다.
Reference
이 문제에 관하여([수시 업데이트] 라벨의 이벤트 & 청취자 사용을 시도해 보도록 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/jordan23/articles/08b1c48cc0ec11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)