Single Responsibility Principle(SRP)
ਇਹ ਸਿਧਾਂਤ ਦੱਸਦਾ ਹੈ ਕਿ ਹਰੇਕ ਵਰਗ ਦੀ ਇੱਕ ਜ਼ਿੰਮੇਵਾਰੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਇਸ ਗੱਲ 'ਤੇ ਜ਼ੋਰ ਦਿੰਦਾ ਹੈ ਕਿ ਇੱਕ ਕਲਾਸ ਨੂੰ ਇੱਕ ਖਾਸ ਫੰਕਸ਼ਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਬਦਲਣ ਦੇ ਬਹੁਤ ਸਾਰੇ ਕਾਰਨ ਨਹੀਂ ਹੋਣੇ ਚਾਹੀਦੇ।
ਉਦਾਹਰਨ: ਉਪਭੋਗਤਾ ਜਾਣਕਾਰੀ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਅਤੇ ਈਮੇਲ ਸੂਚਨਾਵਾਂ ਭੇਜਣਾ।
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)
ਇਹ ਸਿਧਾਂਤ ਮੌਜੂਦਾ ਕੋਡ ਨੂੰ ਸੋਧਣ ਦੀ ਬਜਾਏ ਨਵਾਂ ਕੋਡ ਜੋੜ ਕੇ ਕਾਰਜਕੁਸ਼ਲਤਾ ਵਧਾਉਣ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਇੱਕ ਈ-ਕਾਮਰਸ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਨੂੰ ਸੰਭਾਲਣਾ।
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)
ਇਹ ਸਿਧਾਂਤ ਦਾਅਵਾ ਕਰਦਾ ਹੈ ਕਿ ਪ੍ਰੋਗ੍ਰਾਮ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕੀਤੇ ਬਿਨਾਂ ਇੱਕ ਪ੍ਰਾਪਤ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਵਸਤੂਆਂ ਨੂੰ ਅਧਾਰ ਸ਼੍ਰੇਣੀ ਦੀਆਂ ਵਸਤੂਆਂ ਲਈ ਬਦਲਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਜਿਓਮੈਟ੍ਰਿਕ ਆਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ।
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)
ਇਹ ਸਿਧਾਂਤ ਕਲਾਸਾਂ ਨੂੰ ਉਹਨਾਂ ਤਰੀਕਿਆਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਨ ਤੋਂ ਬਚਣ ਲਈ ਇੰਟਰਫੇਸ ਨੂੰ ਛੋਟੇ ਵਿੱਚ ਤੋੜਨ ਦੀ ਸਲਾਹ ਦਿੰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਉਹਨਾਂ ਨੂੰ ਲੋੜ ਨਹੀਂ ਹੈ।
ਉਦਾਹਰਨ: ਡੇਟਾ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਅਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਇੰਟਰਫੇਸ।
interface UpdateableFeature {
public function updateFeature();
}
interface DisplayableFeature {
public function displayFeature();
}
Dependency Inversion Principle(DIP)
ਇਹ ਸਿਧਾਂਤ ਨਿਰਭਰਤਾ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਨਿਰਭਰਤਾ ਇੰਜੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਸੁਝਾਅ ਦਿੰਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਨਿਰਭਰਤਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਨਿਰਭਰਤਾ ਇੰਜੈਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ।
class OrderProcessor {
private $dbConnection;
private $emailService;
public function __construct(DatabaseConnection $dbConnection, EmailService $emailService) {
$this->dbConnection = $dbConnection;
$this->emailService = $emailService;
}
}
ਯਾਦ ਰੱਖੋ ਕਿ SOLID PHP ਵਿੱਚ ਸਿਧਾਂਤਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੇ ਖਾਸ ਉਦੇਸ਼ ਅਤੇ SOLID PHP ਬਾਰੇ ਤੁਹਾਡੀ ਸਮਝ ਦੇ ਅਧਾਰ 'ਤੇ ਲਚਕਦਾਰ ਤਰੀਕੇ ਨਾਲ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।