I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

إزاي تنظف كود لارافيل (Laravel) وتستخدم الـ Observers عشان تريح دماغك

إزاي تنظف كود لارافيل (Laravel) وتستخدم الـ Observers عشان تريح دماغك لو بتشتغل بـ لارافيل (Laravel) بقالك فترة، أكيد مريت بالمرحلة اللي الـ Controller فيها بيب

إزاي تنظف كود لارافيل (Laravel) وتستخدم الـ Observers عشان تريح دماغك
Reading Count: 171

إزاي تنظف كود لارافيل (Laravel) وتستخدم الـ Observers عشان تريح دماغك

لو بتشتغل بـ لارافيل (Laravel) بقالك فترة، أكيد مريت بالمرحلة اللي الـ Controller فيها بيبدأ يكبر ويورم. بتلاقي نفسك حاطط فيه كود إرسال إيميلات، وتحديث بيانات في جداول تانية، وربما إشعارات (Notifications)، وكل ده بمجرد ما يحصل حفظ (Save) لـ Model معين. ده اللي بنسميه Fat Controllers، وده بيمثل كابوس حقيقي لأي حد بيعمل صيانة للكود بعد كدة. النهاردة هنتكلم عن الحل السحري اللي هو الـ Observers.

يعني إيه أصلاً Observers في لارافيل؟

الـ Observers هي ببساطة وسيلة بتخليك "تراقب" دورة حياة الـ Model بتاعك. لما تعمل إنشاء (Create)، أو تحديث (Update)، أو حذف (Delete) لأي سجل في قاعدة البيانات، الـ Observer بيسمع الحدث ده وبينفذ كود معين أنت محدده. فبدل ما تعك الكود في الـ Controller، أنت بتفصل الـ Logic ده في مكان مستقل، وده بيحقق مبدأ الـ Single Responsibility Principle (SRP) بشكل احترافي.

ليه لازم تستخدم الـ Observers في شغلك؟

  • نظافة الكود (Clean Code): الـ Controller بتاعك هيفضل مركز بس على استقبال الريكويست وإرجاع الرد.
  • سهولة الصيانة (Maintainability): لو حبيت تغير كود إرسال الإيميل، هتروح لملف واحد مش هتدور في كل الـ Controllers.
  • إعادة الاستخدام (Reusability): الكود اللي بتكتبه في الـ Observer بيشتغل سواء عملت العملية من الـ Controller أو من الـ Console Command.

خطوات إنشاء واستخدام الـ Observers

العملية أسهل مما تتخيل، خلينا نفترض إن عندنا User Model وعايزين نبعت رسالة ترحيب أول ما اليوزر يتسجل.

أولاً: إنشاء الـ Observer

عن طريق الـ Artisan Command، هتكتب الأمر ده في التيرمينال:

php artisan make:observer UserObserver --model=User

ثانياً: كتابة الـ Logic

هتلاقي ملف اتكون في مسار App/Observers/UserObserver.php، جوه الملف ده هتحط الـ Logic بتاعك:


public function created(User $user)
{
    // هنا ممكن تبعت إيميل ترحيبي
    Mail::to($user->email)->send(new WelcomeEmail($user));
}

ثالثاً: تسجيل الـ Observer

عشان لارافيل يحس بالـ Observer بتاعك، لازم تسجله في الـ AppServiceProvider.php جوه دالة الـ boot:

User::observe(UserObserver::class);

نصائح احترافية عشان تطور مهاراتك

بص يا صديقي، الـ Observers أداة قوية جداً لكن "ما تفرطش" في استخدامها. بلاش تحط فيها عمليات تقيلة جداً زي معالجة الصور أو عمليات معقدة لأنها هتأخر عملية الحفظ في قاعدة البيانات. في الحالات دي، يفضل تستخدم الـ Queues مع الـ Observers عشان تخلي الموقع سريع.

تعلمك للمفاهيم دي هي اللي بيفرق بين "مبرمج بيكتب كود" وبين "مهندس برمجيات بيبني سيستم قابل للتوسع". جرب تبدأ تطبق ده في مشروعك الجاي، وشوف إزاي الـ Controller بتاعك بقى خفيف ونضيف.


Share

Related posts

May 13, 2026 • 1 min read
Reading Count: 5
إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR

إزاي تخلي مشروعك بـ Inertia صديق لمحركات البحث عن طريق الـ SSR أكيد مريت بالموقف ده: بدأت مشروعك بـ...

May 12, 2026 • 1 min read
Reading Count: 7
إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟

إدارة الحالة (State Management) في تطبيقات Laravel Inertia.. هل لسه محتاج Redux أو Vuex؟ لو أنت مبرم...

May 12, 2026 • 1 min read
Reading Count: 10
دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API

دليل احتراف Laravel مع Inertia و React: بناء تطبيقات Single Page بدون تعقيدات الـ API كثير مننا كمبر...