Single Responsibility Principle(SRP)
Acest principiu prevede că fiecare clasă ar trebui să aibă o singură responsabilitate. Subliniază faptul că o clasă ar trebui să îndeplinească o funcție specifică și să nu aibă prea multe motive să se schimbe.
Exemplu: gestionarea informațiilor despre utilizator și trimiterea notificărilor prin e-mail.
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)
Acest principiu încurajează extinderea funcționalității prin adăugarea de cod nou, mai degrabă decât prin modificarea codului existent.
Exemplu: gestionarea diferitelor metode de plată într-o aplicație de comerț electronic.
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)
Acest principiu afirmă că obiectele unei clase derivate ar trebui să fie substituibile cu obiectele clasei de bază fără a afecta corectitudinea programului.
Exemplu: gestionarea formelor geometrice.
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)
Acest principiu recomandă împărțirea interfețelor în altele mai mici pentru a evita forțarea claselor să implementeze metode de care nu au nevoie.
Exemplu: Interfețe pentru actualizarea și afișarea datelor.
interface UpdateableFeature {
public function updateFeature();
}
interface DisplayableFeature {
public function displayFeature();
}
Dependency Inversion Principle(DIP)
Acest principiu sugerează utilizarea injecției de dependențe pentru a gestiona dependențe.
Exemplu: Utilizarea injecției de dependențe pentru a gestiona dependențe.
class OrderProcessor {
private $dbConnection;
private $emailService;
public function __construct(DatabaseConnection $dbConnection, EmailService $emailService) {
$this->dbConnection = $dbConnection;
$this->emailService = $emailService;
}
}
Amintiți-vă că aplicarea SOLID principiilor în PHP ar trebui făcută în mod flexibil, pe baza scopului specific al proiectului dvs. și a înțelegerii dvs. despre SOLID PHP.