(Dieser Thread ist der zweite Teil eines Workshops, der
hier begonnen hat.)
Objektorientierte Programmierung in PHP
Was sind Objekte?
In der Programmierung sind Objekte Einheiten aus
Methoden und
Eigenschaften. Diese Eionheiten bezeichnet man als
Klasse. Bei einer Klasse handelt es sich um eine nach aussen hin geschlossene Sammlung von Funktionen. Als Schnittstelle nach aussen dienen die Methoden. Sie werden im inneren der Klasse definiert.
Das klingt erst mal verwirrend, ist aber vollkommen logisch aufgebaut. Als Beispiel wollen wir uns eine Klasse namens bier basteln, die einige Grundlegende Funktionalitäten einer richtigen Bier-Flasche besitzt. Das Grundschema einer Klasse ist recht simpel:
PHP-Code:
class bier{
// Zeugs
}
Das ist die Basisklasse. Die Objektinstanzen werden mit dem SChlüsselwort
new erzeugt (stellt Euch das einfach so vor, als wenn wir Flaschen in eine leere Bierkiste stecken):
PHP-Code:
class bier{
// Zeugs
}
$bier1 = new bier();
$bier2 = new bier();
$bier3 = new bier();
Die Klasse hat bislang aber immer noch keine Funktionalitäten, deswegen werden wir ihr nun einige Eigenschaften verpassen:
PHP-Code:
class bier{
var $voll = 1;
}
$bier1 = new bier();
$bier2 = new bier();
$bier3 = new bier();
$bier1->voll = 1;
$bier2->voll = 0;
$bier3->voll = 0;
So, jetzt haben wir eine volle und zwei leere Flasche Bier in unserem Kasten. Innerhalb der Klasse wurde die Variable
$voll per Schlüsselwort
var definiert. Somit kennen alle Instanzen diese Variable (= Eigenschaft). In unserem Beispiel steht sie standardmässig auf "1", also TRUE, damit sind alle erzeugten Instanzen also ersteinmal voll. Die Eigenschaften werden den Instanzen mit dem Operator "
->" zugewiesen (Scope).
So, jetzt gehen wir aber mal in die Tiefen. Bislang haben wir gelernt, dass beliebig viele autarke Instanzen erzeugt werden können, die alle den gleichen Namen haben und alle auf die gleichen Eigenschaften zugreifen können. Innerhalb einer Klasse können wir natürlich auch "normale" Funktionen einbauen:
PHP-Code:
class bier{
var $voll = 1;
function austrinken(){
$this->voll = 0;
}
}
$bier1 = new bier();
$bier1->austrinken();
Das Schlüsselwort "
this" ist so etwas wie ein Platzhalter (Referenz) für die jeweilige Instanz, welche die Funktion aufruft, auch die Funktionen einer Klasse werden mit dem Scope angesprochen.
Innerhalb einer Klasse können auch Funktionen definiert werden, die den gleichen Namen tragen, wie die Klasse selbst. Diese nennt man dann
Konstruktor (an alle C++ und Co. Spezies: PHP kennt keine Destruktoren

). Sie wird beim erzeugen einer neuen Instanz automatisch aufgerufen.
PHP-Code:
class bier{
var $geoeffnet = 0;
var $voll = 1;
function austrinken(){
$this->voll = 0;
}
function oeffnen(){
$this->geoeffnet = 1;
}
function bier(){
$this->oeffnen();
}
}
$bier1 = new bier();
Dieses Beispiel öffnet also alle Bierflaschen, die aus dem Kasten entnommen werden, automatisch.
Gibt es bis hier hin irgendwelche Fragen?