TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #117 754
فصل چهار - مدل‌ها و Eloquent ORM

بخش هشتم - Observers


مشاهده‌گرها یا Observer‌ ها به عنوان کلاس‌هایی شناخته می‌شوند که برای نظارت بر رخدادهای مدل‌های Eloquent طراحی شده‌اند.
زمانی که می‌خواهید منطق خاصی را قبل یا بعد از رخ دادن یک عمل (مانند ایجاد، به‌روزرسانی یا حذف یک رکورد) انجام دهید، می‌توانید از Observerها استفاده کنید.
این امر منجر به جداسازی بهتر منطق بیزنسی از کنترلرها و مدل‌ها و بهبود قابلیت نگهداری کد می‌شود.

لاراول اجازه می‌دهد تا به چندین رخداد پیش‌فرض مدل گوش دهید که با آنها در بخش قبل آشنا شدیم.


برای ایجاد یک Observer جدید می‌توانید از دستور Artisan استفاده کنید:
php artisan make:observer UserObserver --model=User


این دستور یک کلاس به نام UserObserver می‌سازد و آن را با مدل User مرتبط می‌کند. پس از ایجاد، شما می‌توانید متدهایی مانند created، updated و غیره را در آن تعریف کنید تا بر اساس رخدادها اجرا شوند.

فرض کنید می‌خواهیم زمانی که یک کاربر جدید ایجاد شد، یک پیام خوش‌آمدگویی برای او ارسال شود. ابتدا یک Observer برای مدل User ایجاد می‌کنیم.
در فایل app/Observers/UserObserver.php کدی مانند زیر را اضافه می‌کنیم:

class UserObserver
{
public function created(User $user)
{
Mail::to($user->email)->send(new \App\Mail\WelcomeMail($user));
}
}


متد created درواقع یک رخداد است که با لیست آنها در بخش قبل آشنا شده ایم، درنتیجه میتوان از هر یک از آنها بسته به نیاز به جای created استفاده کرد.

باید این Observer را در AppServiceProvider یا هر جای دیگری که مناسب است، ثبت کنید. این کار معمولاً در متد boot انجام می‌شود:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
User::observe(UserObserver::class);
}
}


اکنون، هر بار که یک شیء جدید از مدل User ایجاد شود، متد created در UserObserver فراخوانی می‌شود و ایمیل خوش‌آمدگویی ارسال می‌شود.

🔖 #Laravel, #PHP, #لاراول, #فصل_۴

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • ❤ 6
  • 👍 2
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →