Uporaba SOLID načel v PHP: primeri in najboljše prakse

Single Responsibility Principle(SRP)

To načelo določa, da mora imeti vsak razred eno samo odgovornost. Poudarja, da mora razred opravljati eno specifično funkcijo in ne sme imeti preveč razlogov za spremembo.

Primer: Upravljanje uporabniških podatkov in pošiljanje e-poštnih obvestil.

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)

To načelo spodbuja razširitev funkcionalnosti z dodajanjem nove kode namesto s spreminjanjem obstoječe kode.

Primer: Upravljanje z različnimi načini plačila v aplikaciji za e-trgovino.

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)

To načelo trdi, da morajo biti objekti izpeljanega razreda nadomestljivi za objekte osnovnega razreda, ne da bi to vplivalo na pravilnost programa.

Primer: Upravljanje geometrijskih oblik.

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)

To načelo svetuje razdelitev vmesnikov na manjše, da bi se izognili prisili razredov k izvajanju metod, ki jih ne potrebujejo.

Primer: Vmesniki za posodabljanje in prikazovanje podatkov.

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

Dependency Inversion Principle(DIP)

To načelo predlaga uporabo vbrizgavanja odvisnosti za upravljanje odvisnosti.

Primer: uporaba vbrizgavanja odvisnosti za upravljanje odvisnosti.

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

Ne pozabite, da je treba uporabo SOLID načel v PHP izvajati prožno glede na poseben namen vašega projekta in vaše razumevanje SOLID PHP-ja.