Framework 튜토리얼의 Laravel & Framework Tutorial 섹션의 Laravel 사건 및 비동기 처리에 대해 소개한 내용입니다. 필요한 친구들에게 도움이 되길 바랍니다!
이벤트 생성
이벤트와 리스너는 일대다 관리이며 하나의 이벤트는 여러 응답 이벤트에 해당합니다
$data를 정의합니다 code> 속성에는 이벤트가 트리거될 때 전달되는 데이터를 할당합니다.
public $data; /** * Create a new event instance. * * @return void */ public function __construct($data) { $this->data = $data; }
비즈니스를 시작하는 방법은 무엇인가요? $data
属性,赋值触发事件时传递的数据。
public function test(){ Test::dispatch('你好事件'); }
namespace App\Lisenter;use App\Events\Test;class TestLisenter { public function handle(Test $test) { var_dump($test->data); //打印:你好事件 }}
php artisan make:listener TestLisenter
/** * 应用程序的事件监听器映射 * * @var array */protected $listen = [ 'App\Events\Test' => [ 'App\Listeners\TestListenter', ],];
这个时候我们要创建, listen 对象来处理业务逻辑
laravel 有提供两种方案:
在EventServiceProvider
添加$listen 数组信息比如:
/** * 确定是否应自动发现事件和侦听器 * * @return bool */public function shouldDiscoverEvents(){ return true;}
让系统自动处理,遍历指定目录
需要在EventServiceProvider
/** * 获取应该用于发现事件的监听器的目录 * * @return array */ protected function discoverEventsWithin() { return [ $this->app->path('Lisenter'),//事件关联的监听器目录APP/Lisenters $this->app->path('Lisenter/test'),//事件关联的监听器目录APP/Lisenters/test ]; }리스너 추가
namespace App\Lisenter;use App\Events\Test;use Illuminate\Contracts\Queue\ShouldQueue;class TestLisenter implements ShouldQueue{ public function handle(Test $test) { var_dump($test->data); //打印:你好事件 }}
EventServiceProvider
에 $listen 배열 정보를 추가합니다. 예: 🎜rrreeeEventServiceProvider
에 추가해야 합니다: 🎜rrreeerrreee🎜시스템이 자동으로 Listen을 일치시킵니다🎜🎜이 때 이벤트 프로세스는 완료되었습니다. 성공하지 못했거나 이벤트 큐 지연, 이벤트 참여 여부 판단, 실패 후 처리 등 이벤트 처리에 대해 자세히 알고 싶다면 문서를 참고하세요🎜🎜🎜🎜이벤트 큐 처리🎜🎜있다면 laravel의 대기열에 연결되지 않았습니다. 친구들은 다음을 참조하세요: Laravel Jobs🎜🎜TestListener에서 ShouldQueue 인터페이스만 구현하면 됩니다🎜🎜다음과 같습니다:🎜rrreee위 내용은 Laravel 이벤트 및 비동기 처리 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!