تطبيق SOLID المبادئ في PHP: أمثلة وأفضل الممارسات

Single Responsibility Principle(SRP)

ينص هذا المبدأ على أن كل فئة يجب أن تتحمل مسؤولية واحدة. إنه يؤكد على أن الفصل الدراسي يجب أن يؤدي وظيفة واحدة محددة وليس لديه الكثير من الأسباب للتغيير.

مثال: إدارة معلومات المستخدم وإرسال إشعارات البريد الإلكتروني.

class UserManager {  
    public function createUser($userData) {  
        // Logic for creating a user  
    }  
}  
  
class EmailService {  
    public function sendEmail($emailData) {  
        // Logic for sending an email  
    }  
}  

Open/Closed Principle(OCP)

يشجع هذا المبدأ على توسيع الوظائف عن طريق إضافة رمز جديد بدلاً من تعديل الكود الحالي.

مثال: التعامل مع طرق الدفع المختلفة في تطبيق التجارة الإلكترونية.

interface PaymentProcessor {  
    public function processPayment();  
}  
  
class CreditCardPaymentProcessor implements PaymentProcessor {  
    public function processPayment() {  
        // Logic for processing credit card payment  
    }  
}  
  
class PayPalPaymentProcessor implements PaymentProcessor {  
    public function processPayment() {  
        // Logic for processing PayPal payment  
    }  
}  

Liskov Substitution Principle(LSP)

يؤكد هذا المبدأ أن كائنات الفئة المشتقة يجب أن تكون قابلة للاستبدال بكائنات من الفئة الأساسية دون التأثير على صحة البرنامج.

مثال: إدارة الأشكال الهندسية.

abstract class Shape {  
    abstract public function area();  
}  
  
class Rectangle extends Shape {  
    public function area() {  
        return $this->width * $this->height;  
    }  
}  
  
class Square extends Shape {  
    public function area() {  
        return $this->side * $this->side;  
    }  
}  

Interface Segregation Principle(ISP)

ينصح هذا المبدأ بتقسيم الواجهات إلى واجهات أصغر لتجنب إجبار الفئات على تنفيذ الأساليب التي لا تحتاج إليها.

مثال: واجهات لتحديث البيانات وعرضها.

interface UpdateableFeature {  
    public function updateFeature();  
}  
  
interface DisplayableFeature {  
    public function displayFeature();  
}  

Dependency Inversion Principle(DIP)

يقترح هذا المبدأ استخدام حقن التبعية لإدارة التبعيات.

مثال: استخدام حقن التبعية لإدارة التبعيات.

class OrderProcessor {  
    private $dbConnection;  
    private $emailService;  
  
    public function __construct(DatabaseConnection $dbConnection, EmailService $emailService) {  
        $this->dbConnection = $dbConnection;  
        $this->emailService = $emailService;  
    }  
}  

تذكر أن تطبيق SOLID المبادئ في PHP يجب أن يتم بمرونة بناءً على الغرض المحدد لمشروعك وفهمك لـ SOLID PHP.