با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن .و کاربرانی که دوره کامل آموزش laravel را دنبال می کنند. در این پست آموزشی قصد بر این است که به آموزش مدیریت رویداد در لاراول بپردازیم. رویداد (Event) یک عمل یا اتفاقی هست که توسط برنامه سازماندهی شده که ممکنه توسط برنامه هم مدیریت شود. رویدادهای لاراول بسادگی پیاده سازی می شوند. رویدادها یک پیاده سازی ناظر ساده ارائه می دهند که به کاربر اجازه به اشتراک گذاشتن و گوش دادن( listeners) به رویدادهای مختلفی که در برنامه وب فعال است، را میدهد. همه کلاسهای رویداد در لاراول در پوشه App / Events ذخیره می شوند و شنوندگان در پوشه app/Listeners ذخیره می شوند.
دستور artisan برای تولید رویدادها و listeners (شنونده)، در برنامه وب شما در زیر نشان داده شده است.
1 | php artisan event:generate |
این فرمان رویدادها و listeners (شنونده) را به پوشه های مربوطه همانطور که در بالا گفته شد، ایجاد می کند.
رویدادها و listeners (شنونده) یک راه عالی برای جدا کردن یک برنامه وب است، زیرا یک رویداد می تواند چندین شنونده داشته باشد که مستقل از یکدیگر هستند.
پوشه رویدادهای ایجاد شده توسط فرمان artisan شامل دو فایل زیر است: event.php و SomeEvent.php آنها در اینجا نشان داده شده اند.
1 2 3 4 5 | <?php namespace App\Events; abstract class Event{ // } |
همانطور که در بالا ذکر شد، event.php شامل تعریف اولیه رویداد کلاس و فراخوانی برنامه namespace برنامه ها و رویدادها می شود.
لطفا توجه داشته باشید که رویدادهای کاربر تعریف شده یا سفارشی در این فایل ایجاد می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php namespace App\Events; use App\Events\Event; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class SomeEvent extends Event{ use SerializesModels; /** * Create a new event instance. * * @return void */ public function __construct() { // } /** * Get the channels the event should be broadcast on. * * @return array */ public function broadcastOn() { return []; } } |
توجه داشته باشید که این فایل از سریال برای رویدادهای پخش در یک برنامه وب استفاده می کند، و پارامترهای لازم در این فایل نیز راه اندازی می شوند.
برای مثال، اگر ما برای ثبت یک رویداد باید مقدار متغیر سفارش را در سازنده مقداردهی کنیم، می توانیم آن را به صورت زیر انجام دهیم:
1 2 3 | public function __construct(Order $order) { $this->order = $order; } |
شنوندگان تمام فعالیت های ذکر شده در یک رویداد ثبت شده را مدیریت می کنند.
رویداد فرمانده هنرمند:
تولید، تمام listeners (شنونده) را در دایرکتوری app/listeners ایجاد می کند.
پوشه Listeners شامل یک فایل EventListener.php است که
تمامی روش های مورد نیاز برای دست زدن به listeners (شنونده) را دارد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php namespace App\Listeners; use App\Events\SomeEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class EventListener{ /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param SomeEvent $event * @return void */ public function handle(SomeEvent $event) { // } } |
همانطور که در کد ذکر شده است، شامل تابع دسته برای مدیریت رویدادهای مختلف است. ما می توانیم شنوندگان مستقل مختلفی ایجاد کنیم که
یک رویداد را هدف قرار می دهند.
ما می توانیم برای یک event یا رویداد، listener های مستقل و مختلف زیادی را تعریف کنیم. امیدواریم از این پست آموزشی نهایت استفاده را برده باشید.
در جلسه بعدی به موضوع نما (Facades) در لاراول خواهیم پرداخت. موفق باشید.