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

أنماط التصميم في 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

Apr 27, 2026 • 1 min read
Reading Count: 69
التعامل مع المصفوفات في PHP: دوال هتوفر عليك ساعات من الشغل

التعامل مع المصفوفات في PHP: دوال هتوفر عليك ساعات من الشغل أكيد مريت باللحظة دي، لما تكون بتعمل مشر...

Apr 27, 2026 • 1 min read
Reading Count: 241
تحسين أداء سكريبتات PHP: نصائح عملية لسرعة خيالية

تحسين أداء سكريبتات PHP: نصائح عملية لسرعة خيالية أكيد مريت بالموقف ده: مشروعك شغال زي الفل في البدا...

Apr 27, 2026 • 1 min read
Reading Count: 214
الـ Magic Methods في PHP: ليه فعلاً بيسموها سحر المبرمجين؟

الـ Magic Methods في PHP: ليه فعلاً بيسموها سحر المبرمجين؟ لو أنت شغال بـ PHP بقالك فترة، أكيد جالك...