
SOLID principles software development me use hote hain code ko maintainable, reusable aur scalable banane ke liye.
1️⃣ Single Responsibility Principle (SRP)
A class should have only one reason to change
// ❌ Bad Example class User { public function saveUser() { /* save user */ } public function sendEmail() { /* send email */ } } // ✅ Good Example class User { public function saveUser() { /* save user */ } } class Email { public function sendEmail() { /* send email */ } }
2️⃣ Open/Closed Principle (OCP)
Code should be open for extension but closed for modification.
// ❌ Bad Example class Payment { public function pay($type) { if ($type == "credit") { /* credit logic */ } elseif ($type == "paypal") { /* paypal logic */ } } } // ✅ Good Example interface PaymentMethod { public function pay(); } class CreditCard implements PaymentMethod { public function pay() { /* credit logic */ } } class PayPal implements PaymentMethod { public function pay() { /* paypal logic */ } }
3️⃣ Liskov Substitution Principle (LSP)
Subclasses should be replaceable without affecting correctness.
// ❌ Bad Example class Bird { public function fly() { /* logic */ } } class Penguin extends Bird { } // Penguins can't fly ❌ // ✅ Good Example class Bird { } class FlyingBird extends Bird { public function fly() { /* logic */ } } class Penguin extends Bird {} // No fly method
4️⃣ Interface Segregation Principle (ISP)
Don’t force classes to implement methods they don’t use.
// ❌ Bad Example interface Worker { public function work(); public function eat(); } class Robot implements Worker { public function work() {} public function eat() {} } // Robots don't eat ❌ // ✅ Good Example interface Workable { public function work(); } interface Eatable { public function eat(); } class Human implements Workable, Eatable { public function work() {} public function eat() {} }
5️⃣ Dependency Inversion Principle (DIP)
High-level modules should not depend on low-level modules. Both should depend on abstractions.
// ❌ Bad Example class MySQLDatabase { public function connect() { /* connect logic */ } } class App { private $db; public function __construct() { $this->db = new MySQLDatabase(); } // Tight coupling ❌ } // ✅ Good Example interface Database { public function connect(); } class MySQLDatabase implements Database { public function connect() { /* connect logic */ } } class App { private $db; public function __construct(Database $db) { $this->db = $db; } // Loose coupling ✅ }
Final Summary
Summary of SOLID Principles in PHP
Principle | Meaning |
---|---|
S – Single Responsibility | One class = One responsibility |
O – Open/Closed | Extend, don’t modify existing code |
L – Liskov Substitution | Derived classes must not break parent behavior |
I – Interface Segregation | Small, specific interfaces over one big interface |
D – Dependency Inversion | Depend on abstractions, not concrete classes |
Comments (0)
No comments yet. Be the first to comment!