پی ایچ پی میں اصولوں کا اطلاق SOLID: مثالیں اور بہترین طرز عمل

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 پی ایچ پی میں اصولوں کو لاگو کرنا آپ کے پروجیکٹ کے مخصوص مقصد اور SOLID پی ایچ پی کے بارے میں آپ کی سمجھ کی بنیاد پر لچکدار طریقے سے ہونا چاہیے۔