Heim  >  Artikel  >  Backend-Entwicklung  >  Der richtige Ansatz zur PHP-Programmierung: praktische Tipps und Beispiele

Der richtige Ansatz zur PHP-Programmierung: praktische Tipps und Beispiele

DDD
DDDOriginal
2023-10-07 10:40:581014Durchsuche

Zuverlässiger, wartbarer Code ist das Rückgrat jedes erfolgreichen PHP-Projekts. Um dies zu erreichen, können wir Code nach den SOLID-Prinzipien schreiben. Zu diesen Prinzipien gehören das Single-Responsibility-Prinzip (SRP), das Open-Closed-Prinzip (OCP), das Liskov-Substitutionsprinzip (LSP), das Interface-Segregation-Prinzip (ISP) und das Dependency-Inversion-Prinzip (DIP).

Single-Responsibility-Prinzip (SRP)

Das Single-Responsibility-Prinzip besagt, dass eine Klasse nur einen Grund für eine Änderung haben sollte. In PHP bedeutet dies, dass eine Klasse eine einzige Verantwortung haben sollte. Ein solches Design kann die Wartbarkeit und Lesbarkeit des Codes verbessern.

bad Beispiel - gemischte Verantwortlichkeiten

class  User
 { 
    public  function  verify ( $username , $password ) { /* ... */ } 
    public  function  sendEmail ( $message ) { /* ... */ } 
}

good Beispiel - einzelne Verantwortung

class  UserAuthenticator
 { 
    public  function  verify ( $username , $password ) { /* ... */ } 
} 
class EmailSender
 {
     public  function  sendEmail ( $message ) { /* ... */ }
}

open -geschlossenes Prinzip (OCP). nicht für Erweiterung geöffnet. Änderung ist geschlossen. In PHP können wir dieses Prinzip mithilfe von Schnittstellen und abstrakten Klassen implementieren. Durch die Definition von Schnittstellen und abstrakten Klassen können wir die Funktionalität erweitern, ohne den vorhandenen Code zu ändern.

Schlechtes Beispiel – direkte Modifikation

class Square
{
    public $side;
    public function __construct($side)
    {
        $this->side = $side;
    }
}
class AreaCalculator
{
    public function calculate($shapes)
    {
        $area = 0;
        foreach ($shapes as $shape) {
            if ($shape instanceof Square) {
                $area += $shape->side * $shape->side;
            } elseif ($shape instanceof Circle) {
                $area += pi() * $shape->radius * $shape->radius;
            }
        }
        return $area;
    }
}

Gutes Beispiel – offen für Erweiterung

interface Shape
{
    public function area();
}
class Square implements Shape
{
    private $side;
    public function __construct($side)
    {
        $this->side = $side;
    }
    public function area()
    {
        return $this->side * $this->side;
    }
}
class Circle implements Shape
{
    private $radius;
    public function __construct($radius)
    {
        $this->radius = $radius;
    }
    public function area()
    {
        return pi() * $this->radius * $this->radius;
    }
}

Lishkov-Substitutionsprinzip (LSP)

Das Liskov-Substitutionsprinzip legt fest, dass Objekte von Superklassen in der Lage sein sollten, Unterklassen durch Objektersetzung zu ersetzen ohne die Korrektheit des Programms zu beeinträchtigen. In PHP stellt die Einhaltung dieses Prinzips sicher, dass eine abgeleitete Klasse den Vertrag ihrer Basisklasse beibehält. Dadurch wird die Konsistenz und Zuverlässigkeit des Codes gewährleistet.

Schlechtes Beispiel – Verstoß gegen LSP

class Bird
{
    public function fly() { /* ... */ }
}
class Ostrich extends Bird
{
    public function fly() { throw new Exception("鸵鸟不能飞"); }
}

Gutes Beispiel – Befolgen von LSP

interface Bird
{
    public function fly();
}
class Sparrow implements Bird
{
    public function fly() { /* ... */ }
}
class Ostrich implements Bird
{
    public function fly() { /* ... */ }
}

Interface Isolation Principle (ISP)

Das Interface Isolation Principle besagt, dass Kunden nicht gezwungen werden sollten, sich auf Dinge zu verlassen, die sie nicht sind Schnittstelle verwenden. In PHP bedeutet dies, kleinere, fokussiertere Schnittstellen anstelle großer, monolithischer Schnittstellen zu erstellen. Dieses Design verbessert die Flexibilität und Wartbarkeit des Codes.

Schlechtes Beispiel – Schnittstellenabszess

interface Worker
{
    public function work();
    public function eat();
    public function sleep();
}

Gutes Beispiel – Schnittstellenisolation

interface Workable
{
    public function work();
}
interface Eatable
{
    public function eat();
}
interface Sleepable
{
    public function sleep();
}

Abhängigkeitsinversionsprinzip (DIP)

Das Abhängigkeitsinversionsprinzip besagt, dass High-Level-Module nicht von Low-Level-Modulen abhängen sollten , aber beide Beide sollten sich auf die Abstraktion verlassen. In PHP können wir Abhängigkeitsinjektion und Abstraktion verwenden, um Klassen zu entkoppeln. Dies verbessert die Testbarkeit und Wartbarkeit Ihres Codes.

Schlechtes Beispiel – High-Level-Module hängen von Low-Level-Modulen ab

class LightBulb
{
    public function turnOn() { /* ... */ }
    public function turnOff() { /* ... */ }
}
class Switch
{
    private $bulb;
    public function __construct()
    {
        $this->bulb = new LightBulb();
    }
    public function operate()
    {
        // Operate the bulb
    }
}

Gutes Beispiel – Abstraktion und Abhängigkeitsinjektion

interface Switchable
{
    public function turnOn();
    public function turnOff();
}
class LightBulb implements Switchable
{
    public function turnOn() { /* ... */ }
    public function turnOff() { /* ... */ }
}
class Switch
{
    private $device;
    public function __construct(Switchable $device)
    {
        $this->device = $device;
    }
    public function operate()
    {
        // Operate the device
    }
}

Zusammenfassend lässt sich sagen, dass das Schreiben von PHP-Code, der den SOLID-Prinzipien entspricht, für wartbare und skalierbare Erstellung von wesentlicher Bedeutung ist Anwendungen Entscheidend. Durch die Einhaltung dieser Grundsätze und die Implementierung der bereitgestellten Beispiele können Sie sicherstellen, dass Ihr PHP-Code im Laufe der Zeit robuster, flexibler und einfacher zu warten ist. Bedenken Sie, dass die Anwendung dieser Prinzipien möglicherweise Änderungen im Denken und Design erfordert, die Vorteile in Bezug auf Codequalität und Wartbarkeit jedoch die Mühe wert sind. Viel Glück beim Schreiben von großartigem PHP-Code!

Das obige ist der detaillierte Inhalt vonDer richtige Ansatz zur PHP-Programmierung: praktische Tipps und Beispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn