PHP-Klassen
Links
Zielsetzung
Es soll das Grundprinzip der objektorientierten Programmierung gezeigt werden.
Beschreibung
Eine Klasse ist ein Container mit Daten, der zusätzlich Operationen mit diesen Daten durchführen kann.
Eine Klasse B kann alle Elemente einer anderen Klasse A erben:
- Die Daten von A sind auch in B verfügbar
- Die Operationen von A sind auch in B verfügbar.
Eine Klasse beschreibt ein eine zusammengesetzte Entität (Ding oder Idee) aus der realen Welt, analog einer Tabelle in SQL.
Die Attribute der Entität sind die "Klassenvariablen". Die Operationen werden "Methoden" genannt und syntaktisch das gleiche wie Funktionen.
Eine PHP-Klasse
<?php
class Vehicle {
protected $type;
protected $name;
public function construct(string $type, string $name){
$this->type = $type;
$this->name = $name;
}
public function identify(){
echo "Typ: $this->type Name: $this->name\n";
}
public function feature(){
echo "Ich kann fahren\n";
}
}
$carAlice = new Vehicle('car', 'M-AL-1234');
$carBob = new Vehicle('car', 'M-BO-4321');
echo "Alice:\n";
$carAlice->identify();
$carAlice->feature();
echo "Bob:\n";
$carBob->identify();
$carBob->feature();
- Eine Klassendefinition beginnt mit class, es folgt ein Klassenname, danach eine geschweifte Klammer.
- Konvention: Klassennamen beginnen mit einem Großbuchstaben.
- Es folgen die Klassenvariablen, hier $type und $name. Optional steht vor dem Variablennamen das Zugriffsrecht, hier protected.
- Konvention: Klassenvariablennamen beginnen mit einem Kleinbuchstaben.
- Es folgen drei Methoden. Jede Methode ist syntaktisch eine Funktion.
- Gibt es eine Methode mit dem Namen construct, ist das eine Funktion, die beim Erzeugen eines Objektes dieser Klasse aufgerufen wird.
- Auf eine Klassenvariable kann nur innerhalb der Klasse mittels $this-> zugegriffen werden:
$this->type = $type;
- Die Klasse endet mit '}'.
- Eine Instanz einer Klasse wird mit new und dem Klassennamen, gefolgt von einem Klammerpaar, erzeugt.
- Innerhalb der Klammer werden die Parameter der Methode construct gesetzt.
- Eine Methode der Klasse wird mit dem Pfeiloperator -> aufgerufen:
$carAlice->identify();