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: 160

إزاي تنظف كود لارافيل (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

Apr 30, 2026 • 1 min read
Reading Count: 4
إزاي تبني Custom Hooks في رياكت وتخلص من تكرار الكود للأبد

إزاي تبني Custom Hooks في رياكت وتخلص من تكرار الكود للأبد أكيد مريت بالموقف ده قبل كده: قاعد شغال ف...

Apr 29, 2026 • 1 min read
Reading Count: 5
مكونات الخادم في ريأكت (React Server Components): هل هي فعلاً مستقبل تطوير الويب؟

مكونات الخادم في ريأكت (React Server Components): هل هي فعلاً مستقبل تطوير الويب؟ لو بتشتغل بـ React...

Apr 29, 2026 • 1 min read
Reading Count: 315
إزاي تخلي تطبيق React بتاعك صاروخ؟ شرح useMemo و useCallback ببساطة

إزاي تخلي تطبيق React بتاعك صاروخ؟ شرح useMemo و useCallback ببساطة أكيد مريت بالموقف ده: بتبني تطبي...