===== OOP - objektorientierte Programmierung in PHP 5/7 ===== ==== Die drei grundlegenden Regeln ==== Bei der objektorientierten Programmierung sollten diese drei grundlegenden Regeln in der angegebenen Reihenfolge beachtet werden: - Wartbarkeit - Wiederverwendbarkeit - Geschwindigkeit **Wartbarkeit**\\ Der Programmcode sollte so geschrieben werden, dass sich jederzeit ein weiterer Programmierer ohne großen Zeitaufwand hierin einlesen, Fehler beeheben und auch erweitern kann. Außerdem ist bei der Programmierung zu beachten, dass man sich selbst auch nach Monaten und Jahren im eigenen Programmcode zurechtfindet. **Wiederverwendbarkeit**\\ Idealerweise wird bei der Erstellung des Codes darauf geachtet, dass dieser auch in anderen Projekten verwendbar ist. Das geht natürlich nicht mit jeder Klasse und Funktion, da die Programmierung ja individuell für das aktuelle Projekt erstellt wird. Aber es ist schon sinnvoll bei der Entwicklung die Frage im Blick zu behalten, ob der Code auch in anderen Projekte eingesetzt werden kann. **Geschwindigkeit**\\ Die Geschwindigkeit hat in dieser Aufzählung die unterste Priorität aber sollte nicht außer Acht gelassen werden. Bei der objektorientierten Programmierung wird bis zu 20 % mehr Code erzeugt, als nötig wäre. Aber dieser Overhead wird für die Einhaltung der ersten beiden Punkte in Kauf genommen. In der Regel sprechen wir hier auch nur von einem Bereich in Millisekunden, die durch die Abarbeitung des Overheads nötig sind. ---- ==== Grundbegriffe der Objektorientierte Programmierung ==== * Klasse (legt die Eigenschaften und Methoden eines Objektes fest) * Eigenschaften (Variablen einer Klasse) * Methoden (Funktionen einer Klasse) * Objekt In einer Klasse wird festgelegt, welche Methoden und Eigenschaften das davon erzeugte Objekt besitzt. Die in der Klasse vordefinierten Eigenschaften können beim Objekt individuell belegt werden. ---- * [[magische_methoden|Magische Methoden]] * [[clone|Objekte klonen]] * [[sichtbarkeit|Sichtbarkeit von Eigenschaften und Methoden]] * [[serialize|Serialisieren von Objekten]]