Principų taikymas SOLID PHP: pavyzdžiai ir geriausia praktika

Single Responsibility Principle(SRP)

Šis principas teigia, kad kiekviena klasė turi turėti vieną atsakomybę. Jame pabrėžiama, kad klasė turi atlikti vieną konkrečią funkciją ir neturėti per daug priežasčių keistis.

Pavyzdys: vartotojo informacijos tvarkymas ir pranešimų el. paštu siuntimas.

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)

Šis principas skatina išplėsti funkcionalumą pridedant naują kodą, o ne keičiant esamą kodą.

Pavyzdys: skirtingų mokėjimo būdų tvarkymas el. prekybos programoje.

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)

Šis principas teigia, kad išvestinės klasės objektai turi būti pakeisti bazinės klasės objektais, nepažeidžiant programos teisingumo.

Pavyzdys: Geometrinių figūrų valdymas.

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)

Šis principas pataria suskaidyti sąsajas į mažesnes, kad klasės nebūtų verčiamos įgyvendinti metodus, kurių joms nereikia.

Pavyzdys: sąsajos duomenims atnaujinti ir rodyti.

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

Dependency Inversion Principle(DIP)

Pagal šį principą priklausomybių valdymui naudoti priklausomybės injekciją.

Pavyzdys: priklausomybės injekcijos naudojimas priklausomybėms valdyti.

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

SOLID Atminkite, kad PHP principų taikymas turėtų būti atliekamas lanksčiai, atsižvelgiant į konkretų jūsų projekto tikslą ir jūsų supratimą apie SOLID PHP.