Ce qui suit est une introduction aux événements Laravel et au traitement asynchrone de la colonne du didacticiel du framework Laravel. soyez utile à vos amis dans le besoin !
php aritsan make:event Test
Événements et surveillance Listen est une gestion un-à-plusieurs. Un événement correspond à plusieurs événements de réponse
définit un attribut $data
et attribue les données transmises lorsque l'événement est déclenché.
public $data; /** * Create a new event instance. * * @return void */ public function __construct($data) { $this->data = $data; }
public function test(){ Test::dispatch('你好事件'); }
php artisan make:listener TestLisenter
namespace App\Lisenter;use App\Events\Test;class TestLisenter { public function handle(Test $test) { var_dump($test->data); //打印:你好事件 }}
À ce stade, nous devons créer un objet d'écoute pour gérer la logique métier
Laravel propose deux options :
Ajoutez des informations sur le tableau $listen dans EventServiceProvider
, par exemple :
/** * 应用程序的事件监听器映射 * * @var array */protected $listen = [ 'App\Events\Test' => [ 'App\Listeners\TestListenter', ],];
Laissez le système le traiter automatiquement et parcourir le répertoire spécifié
Besoin d'ajouter EventServiceProvider
:
/** * 确定是否应自动发现事件和侦听器 * * @return bool */public function shouldDiscoverEvents(){ return true;}
/** * 获取应该用于发现事件的监听器的目录 * * @return array */ protected function discoverEventsWithin() { return [ $this->app->path('Lisenter'),//事件关联的监听器目录APP/Lisenters $this->app->path('Lisenter/test'),//事件关联的监听器目录APP/Lisenters/test ]; }
Le système correspondra automatiquement à Listen
À ce moment, le processus événementiel est terminé. Si cela n'aboutit pas ou si vous souhaitez en savoir plus sur le traitement des événements, comme le délai de file d'attente, juger de l'opportunité de rejoindre l'événement, le traitement après un échec, etc. : reportez-vous au document
Si vous n'avez aucun contact avec les files d'attente Laravel, veuillez vous référer à : Laravel Jobs
Il vous suffit d'implémenter l'interface ShouldQueue dans TestListenter
Cela ressemble à ceci :
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); //打印:你好事件 }}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!