PHP OOP - Klassen und Objekte
Eine Klasse ist eine Vorlage für Objekte, und ein Objekt ist eine Instanz einer Klasse.
OOP-Fall
Nehmen wir an, wir haben eine Klasse namens Fruit. Eine Frucht kann Eigenschaften wie Name, Farbe, Gewicht usw. haben. Wir können Variablen wie $name, $color und $weight definieren, um die Werte dieser Eigenschaften zu speichern.
Wenn die einzelnen Objekte (Apfel, Banane usw.) erstellt werden, erben sie alle Eigenschaften und Verhaltensweisen von der Klasse, aber jedes Objekt hat unterschiedliche Werte für die Eigenschaften.
Definieren Sie eine Klasse
Eine Klasse wird definiert, indem das class
Schlüsselwort verwendet wird, gefolgt vom Namen der Klasse und einem Paar geschweifter Klammern ({}). Alle seine Eigenschaften und Methoden gehen in die geschweiften Klammern:
Syntax
<?php
class Fruit {
// code goes here...
}
?>
Unten deklarieren wir eine Klasse namens Fruit, die aus zwei Eigenschaften ($name und $color) und zwei Methoden set_name() und get_name() zum Setzen und Abrufen der $name-Eigenschaft besteht:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Hinweis: In einer Klasse heißen Variablen Eigenschaften und Funktionen Methoden!
Objekte definieren
Klassen sind nichts ohne Objekte! Wir können mehrere Objekte aus einer Klasse erstellen. Jedes Objekt hat alle Eigenschaften und Methoden, die in der Klasse definiert sind, aber sie haben unterschiedliche Eigenschaftswerte.
Objekte einer Klasse werden mit dem new
Schlüsselwort erstellt.
Im folgenden Beispiel sind $apple und $banana Instanzen der Klasse Fruit:
Beispiel
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
Im folgenden Beispiel fügen wir der Klasse Fruit zwei weitere Methoden hinzu, um die Eigenschaft $color zu setzen und zu erhalten:
Beispiel
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - Das Schlüsselwort $this
Das Schlüsselwort $this bezieht sich auf das aktuelle Objekt und ist nur innerhalb von Methoden verfügbar.
Sehen Sie sich das folgende Beispiel an:
Beispiel
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Wo können wir also den Wert der $name-Eigenschaft ändern? Es gibt zwei Möglichkeiten:
1. Innerhalb der Klasse (durch Hinzufügen einer set_name() Methode und Verwendung von $this):
Beispiel
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Außerhalb der Klasse (durch direkte Änderung des Eigenschaftswerts):
Beispiel
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - Instanz von
Mit dem instanceof
Schlüsselwort können Sie prüfen, ob ein Objekt zu einer bestimmten Klasse gehört:
Beispiel
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>