Events و Listeners در لاراول

قبلا، در مورد Laravel Observers نوشتم و از آنجایی که به آن رسیدم ، آن را به عنوان ویژگی فریم ورک Laravel که دوستش دارم ، ذکر کردم

امروز بخش دیگری از فریم ورک لاراول را که مورد علاقه خودم  هست، همچنین event ها و listener ها را خواهم دید.

Event ها فقط راه هایی برای هشدار دادن به برنامه شما مبنی بر اینکه یک اکشن اتفاق افتاده است ، هستند و می توانید event را در هر نقطه از برنامه، controller، model ، middleware، هر مکان حتی در فایلهایblade  ارسال کنید.

Listener ، همانطور که از نام آن پیداست ، event هایی که در برنامه شما رخ می دهند گوش می دهند ، اما آنها به هر event یی گوش نمی دهند ، برای listen کردن هر event باید از قبل listener برای آن مپ شده باشد.

برای اینکه listener بتواند به یک event ارسال شده پاسخ دهد ، کلاس listener باید در کلاس یک event خاص مپ شود. این mapping ها در کلاس EventServiceProvider اتفاق می افتد که می تواند در فولدر _app \ Providers _folder یافت شود.

در یک event می توانید چندین listeners را در آن مپ کنید و هنگام ارسال ، کلیه کلاس های listener به ترتیبی که مپ شده اند وارد می شوند. 

ایجاد event و listener class

برای ایجاد کلاس event، از دستور artisan * make: event * استفاده کنید:

php artisan make:event

این دستور یک کلاس جدید را در فولدر app\Events برنامه شما ایجاد می کند و آن چیزی است که شما برای ایجاد یک کلاس event نیاز دارید.

برای ایجاد یک کلاس listener، از دستور artisan make: listener استفاده کنید:

php artisan make:listener

این دستور ، مانند ایجاد event، یک کلاس جدید را در فولدر app\Listeners برنامه شما ایجاد می کند و این تنها چیزی است که شما برای ایجاد یک listener class نیاز دارید.

روش دیگر ایجادevents و listeners ، این راه ممکن است راحت تر از مواردی که قبلاً ذکر شد ، رجیستر شود ، ثبت events و listeners در کلاس EventServiceProvider است ، سپس اجرا کنید:

php artisan event:generate

این دستور از طریق کلاس EventServiceProvider اسکن می کند و event ها و listener های از دست رفته هنگام رجیستر شدن را تولید می کند.

همانطور که قبلاً گفتم ، می توانید بیش از یک listener را برای یک event خاص map کنید و به ترتیبی که مپ شدن، پشت سر هم پردازش می شوند.

سعید نصیری
سعید نصیری

من برنامه نویس لاراول، PHP و طراح سایت هستم. برنامه نویسی موبایل و تولید اپلیکیشن های موبایل نیز بخش دیگری از توانایی های فردی من هست. تقریبا ده دوازده سالی تجربه مستمر در زمینه طراحی سایت دارم و نزدیک به یک سال هم میشه که در برنامه نویسی موبایل وارد شده ام.