SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuch.php?group=44
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


OOP und PHP 5


Die Zend Engine 2 ist der Versuch, PHP 5 für den Einsatz im Enterprise-Sektor konkurrenzfähig zu machen und einzugliedern. Sicherlich wurde PHP auch schon vorher von Firmen gezielt eingesetzt, aber die Unterstützung in puncto Zuverlässigkeit und Sicherheit, die eine Programmiersprache geben sollte, war keineswegs zufriedenstellend ausgeprägt.

Die wesentliche Änderung von PHP 5 und der von Zend entwickelten Zend Engine stellt die vollständig überarbeitete Unterstützung für die objektorientierte Programmierung in PHP dar. PHP 5 bietet gegenüber PHP 4 wesentlich bessere Möglichkeiten im Umgang mit Klassen und Objekten, wie z. B. Destruktoren, Exceptions (Fehlerbehandlungsroutinen), Interfaces (Schnittstellen), und eine verbesserte Kapselung. Im Gegensatz zu PHP 4 werden bei Zuweisungen und Übergaben Objekte immer als Referenz behandelt. In Zukunft dürfen Sie sich noch auf weitere Features wie Mehrfachvererbung und strikte Typisierung freuen.

Achtung: In PHP 4 werden Objekte bei Übergabe an Funktionen oder bei Zuweisungen immer als Kopie übergeben und nicht als Referenz!

Zunächst ein Blick auf die neuen zur Verfügung stehenden Schlüsselwörter.

SchlüsselwortBeschreibung
abstractDeklariert Klassen oder Methoden als abstrakt.
cloneWird verwendet, um eine Kopie eines Objekts zu erzeugen.
constDefiniert klassenspezifische Konstanten.
finalDeklariert Klassen oder Methoden als endgültig.
implementsAngabe, wenn eine Klasse ein Interface implementiert.
interfaceDeklariert eine Objektschnittstelle.
instanceofEntspricht is_a() und sollte stattdessen in PHP 5 verwendet werden. Gibt TRUE zurück, wenn das Objekt von einer Klasse abstammt.
privatePrivate Mitglieder wie Eigenschaften und Methoden sind für Aufrufer der Klasse nicht sichtbar.
protectedGeschützte Mitglieder wie Eigenschaften und Methoden sind für Aufrufer der Klasse nicht sichtbar, können jedoch in direkt abgeleiteten Klassen verwendet werden.
publicÖffentliche Mitglieder wie Eigenschaften und Methoden sind für alle Aufrufer der Klasse sichtbar. Dies ist der Standardwert, das heißt, ohne Angabe des Schlüsselworts sind alle Mitglieder öffentlich.
selfKann in Klassen verwendet werden, um Bezug zu Methoden innerhalb derselben Klasse zu nehmen.
staticMethoden oder Eigenschaften können ohne Instanz eines Objekts verwendet werden.
tryLeitet einen Block ein, der der Ausnahmebehandlung unterliegt.
catchLeitet einen Block ein, der eine spezifische Ausnahme behandelt.
throwGeneriert eine Ausnahme (engl. exception).
__autoloadGlobal verfügbare Funktion, mit deren Hilfe Klassenabhängigkeiten zur Laufzeit erfüllt werden können. Wird aufgerufen, wenn ein Objekt der Klasse erzeugt werden soll, die Klasse aber nicht deklariert ist.
__callRuft dynamisch Methoden auf. Die so deklarierte Funktion wird immer dann aufgerufen, wenn in der betreffenden Klasse keine Methode des verlangten Namens vorgefunden wird.
__constructReservierter Name für den Konstruktor einer Klasse. Der Konstruktor wird aufgerufen, bevor das Objekt erzeugt wird. Dieser wird vor allem verwendet, um einen definierten Zustand zu erzeugen. Auslöser ist der Aufruf des Schlüsselworts new.
__destructReservierter Name für den Destruktor einer Klasse. Der Destruktor wird aufgerufen unmittelbar bevor das Objekt zerstört wird. Dieser wird vor allem verwendet, um mit dem Objekt verbundene Ressourcen zu bereinigen.
__getRuft dynamisch Eigenschaften zum Lesen auf. Die so deklarierte Funktion wird immer dann aufgerufen, wenn in der betreffenden Klasse keine Methode des verlangten Namens vorgefunden wird.
__setRuft dynamisch Eigenschaften zum Schreiben auf. Die so deklarierte Funktion wird immer dann aufgerufen, wenn in der betreffenden Klasse keine Methode des verlangten Namens vorgefunden wird.
__METHOD__Unechte Konstante. Wird diese innerhalb einer Klasse verwendet, enthält sie den Namen der Klasse und der Methode. Innerhalb einer Funktion, jedoch außerhalb einer Klasse enthält sie lediglich den Funktionsnamen.