Heute widmen wir uns einem interessanten Thema, nämlich der OOP in PHP. Wofür steht OOP fragen wir uns nun ?
OOP steht für objektorientiertes Programmieren. Bislang sahen unsere PHP Programme so aus:
* Werte in Variablen speichern
* Funktionen aufrufen
* Rückgabewerte von Funktionen in Variablen speichern
Diese Art zu programmieren nennt man strukturiertes oder manchmal auch prozedurales Programmieren.
Der Nachteil dabei: Der Code ist dabei natürlich eher am Rechner orientiert als an der tatsächlichen Problematik die sich dem Programmierer bei der Umsetzung stellt. Zum anderen ist eine Nachbearbeitung des Codes für fremde Programmierer deutlich erschwert, weil sie sich durch den gesamten Code kämpfen müssen und verstehen müssen in welchem Bezug welche Variablen, Funktionen stehen.
Das Konzept der OOP bietet dem Programmierer hier ein komplett neues Modell. Hier stehen Klassen und Methoden anstelle der Funktionen, ein Programm ist als Abbild der Welt aufgebaut und setzt sich sozusagen aus Modulen zusammen.
Weil das ein wenig esoterisch und unverständlich klingen mag, hier ein einfaches Beispiel in Form einer sehr für Anschauungszwecke vereinfachten Mitarbeiterverwaltung.
Wir hätten da zum einen die Klasse Mitarbeiter. Diese Klasse verfügt über die folgenden Eigenschaften:
* Vorname
* Nachname
* Gehalt
Ein netter Chef ist natürlich auch daran interessiert, das Gehalt seiner Mitarbeiter zu erhöhen, daher brauchen wir eine Funktion um das Gehalt zu erhöhen. Die internen Funktionen einer Klasse bezeichnen wir als Methoden. Nennen wir diese Methode einmal
* erhoeheGehalt
Wie sieht das ganze nun konkret in PHP aus? Wir erstellen zunächst eine Datei Mitarbeiter.class.php:
Dies wäre zunächst unser PHP Code. Wie wir sehen legt man die Eigenschaften der Klasse mit var $variablenname fest. Zu unserer Methode erhoeheGehalt() kommen wir später.
Wir könnten nun in einer neuen Datei test.php eine neue Instanz unserer Klasse so erzeugen. Die Anweisung zum Erzeugen einer neuen Instanz einer Klasse erfolgt mittels der new Anweisung:
$handle = new Klassenname();
Das nützt uns allerdings noch wenig, denn wir haben den Konstruktor vergessen. Der Konstruktor ist eine Funktion gleichen Namens wie unsere Klasse die bei der Initialisierung einer neuen Klasseninstanz die benötigten Werte in den Speicher lädt.
Hier unser Code mit dem Konstruktor der Vorname,Nachname und Gehalt lädt. Man merke: Um innerhalb der Klasse auf eigene Eigenschaften zurückzugreifen benutze man $this->Varname; z.B. $this->Vorname.
Nun könnten wir mit:
den Mitarbeiter Kai Kugelfrosch mit dem Anfangsgehalt von 3600 initialisieren. Wir können dann auch bereits auf die Definierten Eigenschaften zugreifen.
Mittels:
gibt zB den Nachnamen aus. Nun könnten wir als nächstes die Methode erhoeheGehalt() fertigstellen:
Frech wie wir einmal sind gehen wir davon aus dass das Gehalt nie reduziert wird ;)
Wichtig: Eigenschaften werden nie extern sondern immer intern durch Methoden geändert.
Testen ob unsere Methode so arbeitet wie sie soll können wir mit
So haben wir eine einfache Klasse einmal angelegt.
Ihr fragt Euch nun sicherlich wozu eigentlich und was das soll. Zugegeben für wirklich kleinere Projekte mag sich OOP nicht lohnen, aber wenn es an grössere Sachen geht, bietet es dem Programmierer wirklich einige
Erleichterung, da zum einen die Übersichtlichkeit dank klarer Strukturierung mit den Klassen (immer auch ein wenig vom Programmierer abhängig ;) eher gegeben ist, was auch das Nachbearbeiten eigenen oder auch fremden Codes deutlich erleichtert, zum anderen ist die Möglichkeit, Instanzen zu erzeugen sehr bequem, weil man die Eigenschaften und Methoden nicht neu erzeugen muss, sondern auf einmal angelegtes zurückgreifen kann.
Eine nette weitere Eigenschaft des OOP bietet das Vererben aber dazu kommen wir dann im nächsten Teil.
Ein kleiner Tip noch: Solltet Ihr einmal auf eine Funktion einer Klasse zurückgreifen wollen, ohne eine Instanz der Klasse zu erzeugen so könnt Ihr das mit klassenname::methode() machen, z.B.:
Lust, selbst einen Artikel zu schreiben?
Das Photozauber Team dankt für jede Unterstützung Eurerseits.



