Dieses kleine Tutorial erklärt kurz, wieso man Klassen verwenden sollte, und wie diese aufgebaut sind.
Definition und Verwendung von Klasse
Klassen sind wie Kontainer aus denen man Werkzeuge (Die einzelnen Funktionen) nimmt. Natürlich können auch Variablen in den Klassen definiert werden
Hier ein Beispiel ohne Klassen:
1 |
function die_funktion($wert){
|
So würde jeder normalerweise eine Funktione schreiben und aufrufen.
Das ist schön und gut. Aber wir wollen vermeiden, dass wir diese Funktion immer wieder in eine Datei schreiben müssen, um sie aufzurufen. (z.B. bei mehreren PHP Dateien).
Mann könnte diese Funktion zwar in eine Externe Datei schreiben, und diese dann immer per include() einbinden, aber sobald eine Funktion aus versehen zweimal eingebunden wird, kommt es zu Fehlern, und ist meist die unschönere Methode. Außerdem bleibt so die Übersicht beim Programmieren erhalten. Um das doppelte Einbinden zu verhindern kann man aber auch require_once oder include_once verwenden. Trotzdem sind Klassen dem vorzuziehen.
Besser sind Klassen, die ein geschlossenes System darstellen.
Nehmen wir eine Datei. Sie heißt "die_klasse.php"
1 |
class die_klasse{
|
Nun geben wir die Klasse einem Objeckt über, um die in Ihr enthaltenen Funktionen aufzurufen
1 |
//jetzt müssen wir die Klasse öffnen, um aus ihr eine Funktion zu extrahieren. Das geht so...
|
Zur Klasse ist zu sagen:
Um in einer Funktion einer Klasse eine andere Funktion dieser Klasse aufzurufen benutzt man den parameter $this
Das geht so.
1 |
class die_klasse{
|
Man kann mit $this auch Werte aus VARs der Klasse auslesen und setzen:
1 |
class die_klasse{
|
Im Grunde genommen ändert sich nicht viel beim Programmieren, außer das es so übersichtlicher wird.
Es wäre nämlich schwierig aus 100 Dateien 100 mal ein und dieselbe Klasse wegen eines Bugs zu fixen, anstatt dies einmal in einer Zentralen Klasse zu tun.
Ich persönlich empfehle den Einsatz von Klassen, sobald die in ihr gespeicherten Funktionen mehrfach verwendet werden.
Vererbung von Klasse
Man kann mit Klassen auch Klassenfunktionen und Variablen auf andere Klassen vererben.
Hier gehen wir wie folgt vor…
1 |
class A{
|
Hierbei wurden zwei Klassen erstellt. Die erste (A) enthält die Funktion „in_a()“ und die zweite Klasse (B) enthält drei Funktionen.
# in_b()
# test()
# test2()
Das Objekt $klasseA enthält nur die Funktion in_a(), das Objekt $klasseB aber die schon oben in der Liste aufgeführten Funktionen UND die Funktionen von A!
$klasseA->in_a(); würde also „Ich bin in A“ wiedergeben, $klasseB->in_a(); aber auch, da diese Funktion von A (Parent) an B (Child) vererbt wurde.
Das wichtige beim Programmieren in der Klasse ist nun die Art und Weise vererbte Funktionen innerhalb der Klasse aufzurufen. Hat man zuvor $this-> genommen, um in einer Klasse eine Funktion aufzurufen, so muss man um eine Vererbte Funktion aufzurufen :: verwenden.
Dies Funktioniert nach folgendem Prinzip.
parent::in_a();
Ruft „in_a()“ aus der Parent Klasse (im oberen Beispiel Klasse A) auf. „parent::“ kann dabei immer verwendet werden, wenn man eine Funktion aus einer „parent“ Klasse in einer Child Klasse aufgerufen werden soll.
Dies Funktioniert auch, wenn man den Klassennamen vor :: verwendet:
A::in_a();
Diese Beispiele wurden in den Funktionene test() und test2() in der Klasse B (oben) demonstriert.
Anmerkung: Hat man eine Klasse, die bereits eine Childklasse ist noch einmal vererbt, so sollte man anstatt parent::eine_funktion() lieber nach folgendem Prinzip vorgehen:
KlassenName1::die_funktion(); und KlassenName2::die_funktion();
Dies sorgt dafür, dass es zu keine Kollisionen kommt, wenn in beiden Childklassen Funktionen mit dem selben Namen vorhanden sind.
MfG,
Sniper