PHP-Konzept der objektorientierten Programmierung (OOP) mit Beispiel

โšก Intelligente Zusammenfassung

Objektorientierte Programmierung (OOP) in PHP modelliert Anwendungen anhand realer Objekte mithilfe von Klassen und Objekten. Diese Einfรผhrung erklรคrt die OOP-Prinzipien Kapselung, Vererbung und Polymorphie, deren Unterstรผtzung durch PHP und erstellt Schritt fรผr Schritt funktionierende Beispiele fรผr Klassen, Vererbung und Schnittstellen.

  • ๐Ÿงฑ Klassen und Objekte: Eine Klasse definiert die Eigenschaften und Methoden eines realen Objekts, und ein Objekt ist eine einzelne Instanz dieser Klasse.
  • ๐Ÿ”’ Verkapselung: Private Variablen mit รถffentlichen Getter- und Setter-Methoden verbergen interne Details und schรผtzen den Zustand eines Objekts.
  • ๐Ÿ‘ช Erbe: Das Schlรผsselwort `extends` ermรถglicht es einer Kindklasse, die Methoden einer Elternklasse wiederzuverwenden, wodurch doppelter Code vermieden wird.
  • ๐Ÿ” Polymorphismus: Eine Schnittstelle definiert Standardmethoden, die von vielen Klassen unterschiedlich implementiert werden, hinter einer einheitlichen Struktur.tract.
  • ๐Ÿ“ UML-Klassendiagramm: Ein Klassendiagramm zeigt den Klassennamen, die Variablen und die Methoden, wobei Pluszeichen, Minuszeichen und ein Hash-Zeichen den รถffentlichen, privaten bzw. geschรผtzten Gรผltigkeitsbereich kennzeichnen.
  • ๐Ÿงฉ Schnittstellen und Abstract: Ein SixpacktracEine t-Klasse teilt sich gemeinsamen Code, wรคhrend eine Schnittstelle garantiert, dass jede Treiberklasse die gleichen Methoden bereitstellt.
  • ๐Ÿค– KI-Assistent: KI-Tools kรถnnen aus einer Beschreibung eine PHP-Klasse generieren und prozeduralen Code in sauberen objektorientierten Code umgestalten.

PHP Objektorientierte Programmierung

Was sind OOPs?

Objektorientierte Programmierung ist ein Ansatz zur Softwareentwicklung, der Anwendungen anhand realer Objekte wie Mitarbeiter, Autos und Bankkonten modelliert. Eine Klasse definiert die Eigenschaften und Methoden eines realen Objekts. Ein Objekt ist eine Instanz einer Klasse.

Die drei grundlegenden Komponenten der Objektorientierung sind:

  • Objektorientierte Analyse โ€“ Funktionalitรคt des Systems
  • Objektorientiertes Design โ€“ Architektur des Systems
  • Objektorientierte Programmierung โ€“ Implementierung der Anwendung

Prinzipien der objektorientierten Programmierung

Die drei Hauptprinzipien der objektorientierten Programmierung sind:

  • Kapselung Hierbei geht es darum, die Implementierungsdetails zu verbergen und nur die Methoden offenzulegen. Die Hauptzwecke der Kapselung sind:
    • Reduzieren Sie die Komplexitรคt der Softwareentwicklung โ€“ indem Sie die Implementierungsdetails verbergen und nur die Vorgรคnge anzeigen, wird die Verwendung einer Klasse vereinfacht.
    • Der interne Zustand eines Objekts wird geschรผtzt โ€“ der Zugriff auf die Klassenvariablen erfolgt รผber Methoden wie get und set. Dies macht die Klasse flexibel und wartungsfreundlich.
    • Ermรถglichen Sie es, die interne Implementierung der Klasse zu รคndern, ohne sich Sorgen machen zu mรผssen, dass der Code, der die Klasse verwendet, dadurch beeintrรคchtigt wird.
  • Erbe โ€“ Hierbei geht es um die Beziehung zwischen Klassen. Diese Beziehung hat die Form einer Eltern-Kind-Beziehung. Die Kindklasse verwendet die in der Elternklasse definierten Methoden. Der Hauptzweck der Vererbung ist:
    • Wiederverwendbarkeit โ€“ mehrere Kindelemente kรถnnen vom selben Elternelement erben. Dies ist besonders nรผtzlich, wenn hรคufig genutzte Funktionen wie das Hinzufรผgen, Aktualisieren und Lรถschen von Daten in der Datenbank bereitgestellt werden mรผssen.
  • Polymorphie Hierbei geht es um eine einzige Schnittstelle mit vielen verschiedenen Implementierungen. Der Hauptzweck von Polymorphismus ist:
    • Um die Wartung von Anwendungen zu vereinfachen und sie erweiterbarer zu machen.

Hoppla Concepts in PHP

PHP ist eine objektorientierte Skriptsprache; sie unterstรผtzt alle oben genannten Prinzipien. Die oben genannten Prinzipien werden erreicht durch:

  • Kapselung โ€“ durch die Verwendung von โ€žgetโ€œ- und โ€žsetโ€œ-Methoden sowie Zugriffsmodifikatoren.
  • Erbe โ€“ durch Verwendung des Schlรผsselworts โ€žextendsโ€œ.
  • Polymorphie โ€“ durch die Verwendung des Schlรผsselworts โ€žimplementsโ€œ.

Jetzt verfรผgen wir รผber die Grundkenntnisse von OOP und wissen, wie es unterstรผtzt wird PHPSchauen wir uns nun Beispiele an, die die oben genannten Prinzipien umsetzen.

Was ist UML?

Die Unified Modeling Language (UML) ist eine Technik, die zum Entwurf und zur Dokumentation objektorientierter Systeme verwendet wird.

UML erzeugt eine Reihe von Dokumenten, wir werden uns jedoch das Klassendiagramm ansehen, das fรผr die objektorientierte PHP-Programmierung sehr wichtig ist.

Beispiel fรผr ein Klassendiagramm

Hoppla Concepts in PHP

Klassendiagrammschlรผssel

  • Das oberer Kasten enthรคlt den Klassennamen
  • Das mittlere Box enthรคlt die Klassenvariablen
  • Das unterer Kasten enthรคlt die Klassenmethoden
  • Das minus (-) Das Zeichen bedeutet privater Geltungsbereich
  • Das plus (+) Zeichen bedeutet รถffentlichen Bereich
  • Das Hash (#) Zeichen bedeutet geschรผtzter Bereich

So erstellen Sie eine Klasse in PHP

Das Schlรผsselwort class wird verwendet, um eine Klasse in PHP zu definieren. Nachfolgend finden Sie die Regeln zum Erstellen einer Klasse in PHP.

  • Der Klassenname sollte mit einem Buchstaben beginnen
  • Der Klassenname darf kein PHP-reserviertes Wort sein
  • Der Klassenname darf keine Leerzeichen enthalten

Nehmen wir an, wir mรถchten eine Klasse zur Darstellung von Tieren erstellen. Wir beginnen damit, die Merkmale zu identifizieren, die allen Tieren gemeinsam sind.

  • Alle Tiere gehรถren einer Familie an, wie zum Beispiel Pflanzenfresser, Fleischfresser usw.
  • Alle Tiere fressen Nahrung

Das untenstehende Diagramm zeigt das Klassendiagramm fรผr das Tier.

Erstellen Sie eine Klasse in PHP

Nun lasst uns unsere Tierklasse programmieren.

<?php
class Animal
{
    private $family;
    private $food;
    public function __construct($family, $food)
    {
        $this->family = $family;
        $this->food = $food;
    }
    public function get_family()
    {
        return $this->family;
    }
    public function set_family($family)
    {
        $this->family = $family;
    }
    public function get_food()
    {
        return $this->food;
    }
    public function set_food($food)
    {
        $this->food = $food;
    }
}
?>

HIER,

  • โ€žprivate $family, $foodโ€œ bedeutet, dass auf die Variablen nicht direkt von auรŸerhalb der Klasse zugegriffen werden kann (Kapselung).
  • โ€žpublic function __construct($familyโ€ฆ)โ€œ ist die Konstruktormethode in PHP. Diese Funktion wird immer dann aufgerufen, wenn eine Instanz der Klasse erstellt wird. In diesem Fall werden die Familie und das Essen festgelegt.
  • โ€žpublic function getโ€ฆ()โ€œ ist die Methode, mit der auf den Familien- oder Lebensmittelwert zugegriffen wird (Kapselung).
  • โ€žpublic function setโ€ฆ()โ€œ ist die Methode, mit der der Familien- oder Lebensmittelwert festgelegt wird (Kapselung).

Wie man Vererbung in PHP implementiert

Wir werden mit einer Kuh und einem Lรถwen arbeiten. Sowohl die Kuh als auch der Lรถwe erben von der Klasse โ€žAnimalโ€œ.

Das folgende Klassendiagramm zeigt die Beziehungen.

Implementieren Sie die Vererbung in PHP

Beachten Sie, dass die Kuh von der Klasse Animal erbt und auch eigene Variablen und Methoden definiert.

Nun wollen wir die Klasse โ€žCowโ€œ programmieren.

<?php
class Cow extends Animal
{
    private $owner;
    public function __construct($family, $food)
    {
        parent::__construct($family, $food);
    }
    public function set_owner($owner)
    {
        $this->owner = $owner;
    }
    public function get_owner()
    {
        return $this->owner;
    }
}
?>

Nun lasst uns die Lion-Klasse programmieren.

<?php
class Lion extends Animal
{
    public function __construct($family, $food)
    {
        parent::__construct($family, $food);
    }
}
?>

HIER,

  • โ€žclass โ€ฆ extends Animalโ€œ bewirkt, dass die Klassen Cow und Lion Methoden der Klasse Animal verwenden (Vererbung).

Wie man ein Objekt der Klasse erstellt

Der Einfachheit halber sollten sich die Klassen Animal, Cow und Lion alle im selben Verzeichnis befinden.

Lasst uns nun die Anwendung erstellen, die unsere Klassen verwendet.

Beispiel einer PHP-Klasse

<?php
require 'Animal.php';
require 'Cow.php';
require 'Lion.php';
$cow = new Cow('Herbivore', 'Grass');
$lion = new Lion('Carnivore', 'Meat');
echo '<b>Cow Object</b> <br>';
echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>';
echo '<b>Lion Object</b> <br>';
echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food();
?>

Testen unserer Anwendung

Betrachten wir nun unsere Anwendung in einem Webbrowser.

Vererbung in PHP

Beide Objekte verwenden die von der Klasse Animal geerbten Methoden get_family und get_food wieder, was die Vererbung in der Praxis veranschaulicht.

Wie man Polymorphismus in PHP implementiert

Nehmen wir an, wir mรถchten eine Anwendung entwickeln, die Verbindungen zu verschiedenen Datenbank-Engines herstellt, wie zum Beispiel MySQL und SQL Der Server verwendet jedoch dieselbe einheitliche Schnittstelle. Wir kรถnnen eine Schnittstelle erstellen, die die Standardmethoden und eine absolute Schnittstelle definiert.tract-Klasse, die die gemeinsamen Methoden implementiert.

  • Interface โ€“ Es รคhnelt einer Klasse. Es definiert lediglich die Methoden und Parameter.
  • AbstracT-Klasse โ€“ Es handelt sich um eine Klasse, die nicht zum direkten Erstellen eines Objekts verwendet werden kann. Sein Zweck besteht darin, teilweise oder vollstรคndige Implementierungen gรคngiger Methoden bereitzustellen.

Das untenstehende Klassendiagramm veranschaulicht die Beziehung zwischen unseren Abstract-Klasse, Schnittstelle und Implementierungsklassen.

Vererbung in PHP

Lasst uns nun unsere Bauchmuskeln trainieren.tract-Klasse.

<?php
abstract class DBCommonMethods
{
    private $host;
    private $db;
    private $uid;
    private $password;
    public function __construct($host, $db, $uid, $password)
    {
        $this->host = $host;
        $this->db = $db;
        $this->uid = $uid;
        $this->password = $password;
    }
}
?>

HIER,

  • โ€žBauchmuskelntracโ€žt classโ€œ bedeutet, dass die Klasse nicht direkt zur Erstellung eines Objekts verwendet werden kann.
  • โ€ž$host, $dbโ€ฆโ€œ sind Klassenvariablen, die allen Implementierungen gemeinsam sind.
  • โ€žfunction __construct(โ€ฆ)โ€œ ist die Klassenkonstruktormethode, die bei der Initialisierung die Werte der gemeinsamen Variablen festlegt.

Nun erstellen wir die Schnittstelle, die die Standardmethoden enthรคlt, welche je nach Datenbank-Engine unterschiedlich implementiert werden.

<?php
interface DBInterface
{
    public function db_connect();
    public function insert($data);
    public function read($where);
    public function update($where);
    public function delete($where);
}
?>

HIER,

  • โ€žSchnittstelleโ€œ ist das Schlรผsselwort fรผr die Erstellung von Schnittstellen
  • โ€žpublic functionโ€ฆ(โ€ฆ)โ€œ sind die Standardmethoden, die implementiert werden sollten

Nun erstellen wir die konkreten Klassen, die die Klasse DBCommonMethods erweitern und die Schnittstelle DBInterface implementieren. Zuerst MySQLDriver.php:

<?php
class MySQLDriver extends DBCommonMethods implements DBInterface
{
    public function __construct($host, $db, $uid, $password)
    {
        parent::__construct($host, $db, $uid, $password);
    }
    public function db_connect() { /* connect code goes here */ }
    public function delete($where) { /* delete code goes here */ }
    public function insert($data)  { /* insert code goes here */ }
    public function read($where)   { /* read code goes here */ }
    public function update($where) { /* update code goes here */ }
}
?>

Dann MSSQLServerDriver.php:

<?php
class MSSQLServerDriver extends DBCommonMethods implements DBInterface
{
    public function __construct($host, $db, $uid, $password)
    {
        parent::__construct($host, $db, $uid, $password);
    }
    public function db_connect() { /* connect code goes here */ }
    public function delete($where) { /* delete code goes here */ }
    public function insert($data)  { /* insert code goes here */ }
    public function read($where)   { /* read code goes here */ }
    public function update($where) { /* update code goes here */ }
}
?>

HIER,

  • โ€žclass โ€ฆ extends DBCommonMethodsโ€œ verwendet die Methoden in DBCommonMethods
  • โ€žโ€ฆ implements DBInterfaceโ€œ stellt sicher, dass die Klasse unabhรคngig vom verwendeten Datenbanktreiber die Standardmethoden bereitstellt.

Der Code, der die oben genannten Klassen verwendet, wรผrde folgendermaรŸen aussehen:

<?php $db = new MySQLDriver($host, $db, $uid, $password); ?>

Oder:

<?php $db = new MSSQLServerDriver($host, $db, $uid, $password); ?>

Der restliche Code wรคre fรผr beide Treiber identisch, zum Beispiel:

<?php
$db->db_connect();
$db->insert($data);
?>

Das ist Polymorphismus in Aktion: Dieselben Methodenaufrufe funktionieren auf jedem Treiber, der die Schnittstelle implementiert, sodass sich der umgebende Code beim Wechsel der Datenbank-Engine nie รคndert.

Hรคufig gestellte Fragen

Ein SixpacktracEine Klasse kann sowohl implementierte Methoden als auch Eigenschaften enthalten, und eine Klasse erweitert nur eine davon. Ein Interface deklariert lediglich Methodensignaturen, und eine Klasse kann viele implementieren. Verwenden Sie ein absolutes Interface.tracEine Klasse zum Teilen von Code, eine Schnittstelle zur Durchsetzung einer Bedingungtract.

Die vier Sรคulen sind Einkapselung, Vererbung, Polymorphismus und Absenz.traction. Dieses Tutorial konzentriert sich auf die ersten drei; abstraction verbirgt komplexe Details hinter einer einfachen Schnittstelle, die PHP mit abs unterstรผtzt.tract-Klassen und Schnittstellen.

ร–ffentliche Elemente sind รผberall zugรคnglich, private Elemente nur innerhalb derselben Klasse und geschรผtzte Elemente nur innerhalb der Klasse und ihrer Unterklassen. Sie gewรคhrleisten die Kapselung, indem sie kontrollieren, wer die einzelnen Eigenschaften oder Methoden lesen oder รคndern darf.

Ja. Geben Sie der KI die Felder oder eine Tabellendefinition, und sie kann eine Klasse mit typisierten Eigenschaften, einem Konstruktor sowie Getter- und Setter-Methoden erzeugen. RevSehen Sie sich die Typen an und fรผgen Sie eine Validierung hinzu, bevor Sie die Klasse verwenden.

Ja. Fรผgen Sie das prozedurale Skript ein, und die KI kann zusammengehรถrige Funktionen und Daten in Klassen gruppieren, Kapselung anwenden und Vererbung oder Schnittstellen vorschlagen. Testen Sie den refaktorierten Code, da das Verhalten identisch bleiben sollte.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: