اگر شما با لاراول کار کرده باشید، احتمالاً با ساختار دایرکتوری آن آشنایی دارید. لاراول به شکل خاصی طراحی شده که توسعهدهندگان میتوانند به راحتی فایلها و پوشههای مربوط به هر بخش را پیدا کنند. یکی از پوشههای مهم در این ساختار، دایرکتوری Events
است.
پوشه Events
مکانی است که شما میتوانید تمام کلاسهای مربوط به رویدادها (events) خود را ذخیره کنید. این رویدادها میتوانند در موقعیتهای مختلف در اپلیکیشن شما ایجاد شده و استفاده شوند. برای مثال، زمانی که کاربری ثبت نام میکند یا زمانی که سفارشی ثبت میشود.
رویدادها به توسعهدهندگان این امکان را میدهند که به راحتی و به صورت جداگانه منطق مرتبط با موضوعات خاصی در اپلیکیشن را مدیریت کنند. این یک روش مفید برای ایجاد یک اپلیکیشن مقیاسپذیر و قابل نگهداری است.
با استفاده از رویدادها، میتوانید منطقهای مختلفی مانند ارسال ایمیل، بهروزرسانی موجودی کالا یا حتی لاگگیری در سیستم را به سادگی جدا کنید و آنها را در یک مکان مشخص مدیریت کنید.
دایرکتوری Events
در لاراول به شما امکان استفاده از الگوی طراحی منتشر-اشتراک (Pub-Sub) را که در بسیاری از اپلیکیشنهای مدرن استفاده میشود، ارائه میدهد. این کار باعث میشود که بتوانید برخی از عملیات پیچیده را به صورت غیر همزمان انجام دهید و تجربه کاربری بهتری را برای کاربران نهایی فراهم کنید.
در نهایت، رویدادها به شما کمک میکنند که همکاری بهتری بین تیمهای مختلفی که روی یک پروژه کار میکنند، ایجاد کنید. با جداکردن منطق مربوطه، میتوانید تغییرات را به راحتی پیگیری و مدیریت کنید.
نمونه کد ایجاد یک رویداد ساده در لاراول
<?php
namespace App\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class UserRegistered
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
}
توضیح خط به خط کد
<?php
شروع فایل PHP
namespace App\Events;
تعیین نام فضا یا namespace برای کلاس رویداد به طور صحیحی
use Illuminate\Broadcasting\InteractsWithSockets;
استفاده از trait برای مدیریت تعاملات سوکت در رویدادها
use Illuminate\Foundation\Events\Dispatchable;
استفاده از trait برای قابلیت dispatch (ارسال) رویداد
use Illuminate\Queue\SerializesModels;
استفاده از trait برای سریالسازی مدلها زمان صفکردن رویداد
class UserRegistered
تعریف کلاس رویداد به نام UserRegistered
use Dispatchable, InteractsWithSockets, SerializesModels;
استفاده از Traitsهایی که مذکور شدند
public $user;
تعریف یک متغیر عمومی برای ذخیرهسازی اطلاعات کاربر
public function __construct($user)
تعریف سازنده کلاس و دریافت اطلاعات کاربر ورودی
$this->user = $user;
تخصیص اطلاعات کاربر به متغیر $user داخل کلاس