تكرار السؤال: …
الإجابة المختصرة
تطلق أحداثاً مثل creating، created، updating، deleted خلال دورة حياة السجل؛ ويجمع الـ Observer مستمعي هذه الأحداث في فئة مخصصة.
الشرح
تتيح أحداث Eloquent تنفيذ إجراءات تلقائية، مثل توليد UUID أو إرسال إشعار عند إنشاء السجل، أو منع الحذف بإعادة false من حدث deleting. يجمع الـ Observer هذه الدوال في فئة أنيقة ويتم ربطه بالنموذج عبر سمة #[ObservedBy([UserObserver::class])] في Laravel الحديثة.
مثال بالكود
class UserObserver {
public function creating(User $user): void {
$user->uuid = (string) Str::uuid();
}
}أخطاء شائعة
- استدعاء دالة $model->save() داخل حدث updating أو saved في الـ Observer دون احتراز مما يسبب حلقة تكرارية لا نهائية (Infinite Loop).