Single Responsibility Principle(SRP)
Prinsip ini menyatakan bahwa setiap kelas harus memiliki satu tanggung jawab. Ini menekankan bahwa kelas harus melakukan satu fungsi tertentu dan tidak memiliki terlalu banyak alasan untuk berubah.
Contoh: Mengelola informasi pengguna dan mengirimkan notifikasi email.
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)
Prinsip ini mendorong perluasan fungsionalitas dengan menambahkan kode baru daripada memodifikasi kode yang sudah ada.
Contoh: Menangani berbagai metode pembayaran dalam aplikasi e-niaga.
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)
Prinsip ini menegaskan bahwa objek dari kelas turunan harus dapat diganti dengan objek dari kelas dasar tanpa mempengaruhi kebenaran program.
Contoh: Mengelola bentuk geometris.
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)
Prinsip ini menyarankan memecah antarmuka menjadi yang lebih kecil untuk menghindari memaksa kelas untuk mengimplementasikan metode yang tidak mereka perlukan.
Contoh: Antarmuka untuk memperbarui dan menampilkan data.
interface UpdateableFeature {
public function updateFeature();
}
interface DisplayableFeature {
public function displayFeature();
}
Dependency Inversion Principle(DIP)
Prinsip ini menyarankan penggunaan injeksi ketergantungan untuk mengelola ketergantungan.
Contoh: Menggunakan injeksi ketergantungan untuk mengelola ketergantungan.
class OrderProcessor {
private $dbConnection;
private $emailService;
public function __construct(DatabaseConnection $dbConnection, EmailService $emailService) {
$this->dbConnection = $dbConnection;
$this->emailService = $emailService;
}
}
Ingatlah bahwa menerapkan SOLID prinsip-prinsip dalam PHP harus dilakukan secara fleksibel berdasarkan tujuan spesifik proyek Anda dan pemahaman Anda tentang SOLID PHP.