PHP Object Oriented Programming (OOPs)-Konzept-Tutorial mit Beispiel

Was sind OOPs?

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

Die drei Grundkomponenten der Objektorientierung sind:

  • Objektorientierte Analyse – Funktionalität des Systems
  • Objektorientiertes Entwerfen – Architektur des Systems
  • Objektorientierte Programmierung – Implementierung der Anwendung

Prinzipien der objektorientierten Programmierung

Die drei Hauptprinzipien von OOP sind:

  • Kapselung – hier geht es darum, die Implementierungsdetails zu verbergen und nur die Methoden offenzulegen. Der Hauptzweck der Kapselung besteht darin:
  • Reduzieren Sie die Komplexität der Softwareentwicklung – indem Sie die Implementierungsdetails verbergen und nur die Vorgänge anzeigen, wird die Verwendung einer Klasse vereinfacht.
  • Schützen Sie den internen Zustand eines Objekts – der Zugriff auf die Klassenvariablen erfolgt über Methoden wie get und set, wodurch die Klasse flexibel und einfach zu warten ist.
  • Die interne Implementierung der Klasse kann geändert werden, ohne dass der Code beschädigt werden muss, der die Klasse verwendet.
  • Erbe – Hier geht es um die Beziehung zwischen Klassen. Die Beziehung nimmt die Form eines Eltern-Kind-Verhältnisses an. Das untergeordnete Element verwendet die in der übergeordneten Klasse definierten Methoden. Der Hauptzweck der Vererbung ist;
  • Wiederverwendbarkeit – mehrere untergeordnete Elemente können vom selben übergeordneten Element erben. Dies ist sehr nützlich, wenn wir allgemeine Funktionen wie das Hinzufügen, Aktualisieren und Löschen von Daten zur Datenbank bereitstellen müssen.
  • Polymorphie – Hier geht es darum, ein einziges Formular, aber viele verschiedene Implementierungsmöglichkeiten zu haben. Der Hauptzweck des Polymorphismus ist;
  • Vereinfachen Sie die Wartung von Anwendungen und machen Sie sie erweiterbarer.

Hoppla Concepts in PHP

PHP ist eine objektorientierte Skriptsprache; Es unterstützt alle oben genannten Prinzipien. Die oben genannten Prinzipien werden erreicht durch:

  • Kapselung – über die Verwendung von „get“- und „set“-Methoden usw.
  • Erbe – über die Verwendung des Schlüsselworts „extends“.
  • Polymorphie – über 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 Beispiele an, die die oben genannten Prinzipien umsetzen

Was ist UML?

Die Unified Modeling Language UML ist eine Technik zum Entwerfen und Dokumentieren objektorientierter Systeme.

UML erzeugt eine Reihe von Dokumenten, aber wir werden uns 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 Oberes Feld enthält den Klassennamen
  • Das mittlere Box enthält die Klassenvariablen
  • Das unterer Kasten enthält die Klassenmethoden
  • Das minus (-) Zeichen bedeutet privaten Bereich
  • 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 mit der Identifizierung der Merkmale, die allen Tieren gemeinsam sind.

  • Alle Tiere gehören zu einer Familie wie Pflanzenfresser, Karneval usw.
  • Alle Tiere fressen Nahrung

Das folgende Diagramm zeigt das Diagramm für das Tier

Erstellen Sie eine Klasse in PHP

Lassen Sie uns nun unsere Tierklasse codieren

<?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 außerhalb der Klasse zugegriffen werden kann (Kapselung).
  • „public function __construct($family…)“ ist die PHP-Konstruktormethode. Diese Funktion wird immer dann aufgerufen, wenn eine Instanz der Klasse erstellt wurde. In diesem Fall legen wir die Familie und das Essen fest.
  • „public function get…()“ ist die Methode, die verwendet wird, um auf den Familien- oder Lebensmittelwert zuzugreifen (Kapselung)
  • „public function set…()“ ist die Methode, die zum Festlegen des Familien- oder Lebensmittelwerts verwendet wird (Kapselung).

So implementieren Sie die Vererbung in PHP

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 Tierklasse erbt und auch ihre eigenen Variablen und Methoden definiert.

Lassen Sie uns nun die Cow-Klasse codieren

<?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;
    }
}
?>

Lassen Sie uns nun die Lion-Klasse codieren

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

HIER,

  • „class … erweitert Animal“ veranlasst die Kuh und den Löwen, Methoden aus der Animal-Klasse (Vererbung) zu verwenden.

So erstellen Sie ein Objekt der Klasse

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

Lassen Sie 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('Canirval', '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

Sehen wir uns nun unsere Anwendung in einem Webbrowser an

Vererbung in PHP

Fantastisch, richtig! Schauen wir uns nun das dritte Prinzip von OOP an, den Polymorphismus.

Nehmen wir an, wir möchten eine Anwendung entwickeln, die eine Verbindung zu verschiedenen Datenbank-Engines herstellt, z MySQL und SQL Server, verwenden aber die gleiche einheitliche Schnittstelle.

Wir können eine Schnittstelle erstellen, die die Standardmethoden definiert, und eine abstrakte Klasse, die die allgemeinen Methoden implementiert.

  • Interface – Es ähnelt einer Klasse. Es definiert lediglich die Methoden und Parameter.
  • Abstrakte 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 folgende Klassendiagramm veranschaulicht die Beziehung zwischen unseren abstrakten Klassen, Schnittstellen und Implementierungsklassen.

Vererbung in PHP

Lassen Sie uns nun unsere abstrakte Klasse erstellen

<?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,

  • „Abstrakte Klasse“ bedeutet, dass die Klasse nicht direkt zum Erstellen eines PHP-Objekts verwendet werden kann
  • „$host,$db…“ sind Klassenvariablen, die allen Implementierungen gemeinsam sind
  • „function __construct(…)“ ist die PHP-Klassenkonstruktormethode, die die Werte der allgemeinen Variablen bei der Initialisierung festlegt

Erstellen wir nun die Schnittstelle, die die Standardmethoden enthält, die 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

Lassen Sie uns nun die konkreten Klassen erstellen, die die DBCommonMethods-Klasse und die DBInterface-Schnittstelle erweitern. 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 } 
} ?>

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,

  • „Klasse … erweitert DBCommonMethods“ verwendet die Methoden in DBCommonMethods
  • „… implementiert DBInterface“ stellt sicher, dass die Klasse unabhängig vom verwendeten Datenbanktreiber Standardmethoden bereitstellt.

Verwendung des obigen Codes Der Code, der die obige Klasse verwendet, würde wie folgt aussehen

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

Or

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

Der Rest des Codes wäre für beide Treiber gleich, z.

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

Zusammenfassung

  • Objektorientierte Programmierung (OOP) ist eine leistungsstarke Technik, die Anwendungen nach realen Objekten modelliert
  • Eine Klasse ist eine Darstellung realer Objekte mit Eigenschaften und Methoden
  • Die drei Grundprinzipien von OOP sind:
  • Kapselung
  • Erbe
  • Polymorphie