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

أنماط التصميم في PHP: طريقك عشان تكتب كود نظيف واحترافي

أنماط التصميم في PHP: طريقك عشان تكتب كود نظيف واحترافي أكيد مريت باللحظة اللي بتفتح فيها كود كنت كاتبه من 6 شهور وبدأت تسأل نفسك: هو أنا كنت بفكر في إيه لما كت

أنماط التصميم في PHP: طريقك عشان تكتب كود نظيف واحترافي
Reading Count: 268

أنماط التصميم في PHP: طريقك عشان تكتب كود نظيف واحترافي

أكيد مريت باللحظة اللي بتفتح فيها كود كنت كاتبه من 6 شهور وبدأت تسأل نفسك: هو أنا كنت بفكر في إيه لما كتبت ده؟ الكود متداخل، والتعديل فيه بقى كابوس، وأي إضافة بسيطة بتوقع الدنيا. ده الوجع الطبيعي لأي مبرمج بيكتب كود من غير ما يعتمد على أسس هندسية واضحة. هنا بيجي دور الـ (Design Patterns) أو أنماط التصميم. دي مش مجرد نظريات، دي "حلول جاهزة" لمشاكل برمجية اتكررت كتير، والناس العباقرة اللي سبقونا حطولنا "كتالوج" نمشي عليه.

يعني إيه أصلاً Design Patterns؟

هي ببساطة "وصفة" أو (Blueprint) لحل مشكلة متكررة في تصميم البرمجيات. بدل ما تخترع العجلة كل مرة، بتستخدم نمط معروف يخلي الكود بتاعك (Maintainable) يعني سهل الصيانة، و (Scalable) يعني يقدر يكبر معاك من غير ما ينهار.

1. نمط التصميم المفرد (Singleton Pattern)

تخيل إن عندك (Database Connection) وعاوز تتأكد إن النظام بتاعك بيفتح اتصال واحد بس طول فترة تشغيل السكريبت عشان يوفر في الموارد (Resources). الـ (Singleton) هنا بطل الحكاية، لأنه بيضمن إن الكلاس (Class) بتاعك ليه نسخة واحدة (Instance) بس في الذاكرة.


class Database {
    private static $instance = null;

    private function __construct() {}

    public static function getInstance() {
        if (self::$instance == null) {
            self::$instance = new Database();
        }
        return self::$instance;
    }
}
$db = Database::getInstance();

2. نمط المصنع (Factory Pattern)

أوقات بنحتاج ننشئ كائنات (Objects) مختلفة بناءً على معطيات معينة. بدل ما تعبي الكود بتاعك بـ (if/else) أو (switch) جوه الـ (Controllers)، الـ (Factory) بيعمل "مصنع" متخصص في إنتاج الكائنات اللي محتاجها. ده بيخلي الكود أنظف بكتير وبيسهل عليك إضافة أنواع جديدة في المستقبل.


interface Notification { public function send(); }

class Email implements Notification { public function send() { /* كود الإيميل */ } }
class SMS implements Notification { public function send() { /* كود الـ SMS */ } }

class NotificationFactory {
    public static function create($type) {
        if ($type == 'email') return new Email();
        if ($type == 'sms') return new SMS();
    }
}

3. نمط الاستراتيجية (Strategy Pattern)

ده واحد من أهم الأنماط. تخيل إنك بتعمل نظام دفع (Payment System) بيدعم فيزا، وباي بال، وتحويل بنكي. بدل ما تعمل (Class) عملاق فيه كل الطرق دي وتعدل عليه كل ما تضيف وسيلة جديدة، الـ (Strategy) بيخليك تفصل كل "استراتيجية" في كلاس منفصل، وبتبدل بينهم وقت التشغيل (Runtime).


interface PaymentStrategy { public function pay($amount); }

class VisaPayment implements PaymentStrategy { public function pay($amount) { /* كود الفيزا */ } }
class PaypalPayment implements PaymentStrategy { public function pay($amount) { /* كود الباي بال */ } }

class Checkout {
    public function process(PaymentStrategy $payment, $amount) {
        $payment->pay($amount);
    }
}

نصيحة من أخ لمبرمج محترف

بلاش تقع في فخ "الإفراط في الهندسة" (Over-engineering). مش لازم تستخدم الـ (Design Patterns) في كل حتة وفي كل كود بسيط. استخدم النمط المناسب للمشكلة المناسبة. سر الاحتراف هو إنك تعرف امتى تطبق النمط وامتى الكود البسيط العادي يكون هو الحل الأمثل. ابدأ طبق نمط واحد في مشروعك الجاي، وشوف الفرق في راحة بالك لما تيجي تعدل الكود بعد فترة.


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 كثير مننا كمبر...