|
Die GrundlagenclassEinfache Klassendefinitionen beginnen mit dem Schlüsselwort class, gefolgt von einem Klassennamen, gefolgt von einem Paar geschweifter Klammern, die die Definitionen der Eigenschaften und Methoden der Klasse enthalten. Der Klassenname kann jeder gültige Bezeichner sein, vorausgesetzt es ist kein von PHP reserviertes Wort. Ein gültiger Klassenname beginnt mit einem Buchstaben oder einem Unterstrich, gefolgt von einer beliebigen Anzahl von Buchstaben, Ziffern oder Unterstrichen; als regulärer Ausdruck formuliert: ^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$. Eine Klasse darf aus ihren eigenen Konstanten, Variablen ("Eigenschaften" genannt) und Funktionen ("Methoden" genannt) bestehen. Beispiel #1 Definition einer einfachen Klasse
<?phpDie Pseudovariable $this ist verfügbar, falls eine Methode aus einem Objektkontext heraus aufgerufen wird. $this ist eine Referenz auf das aufrufende Objekt (üblicherweise das Objekt, zu dem die Methode gehört, aber möglicherweise ein anderes Objekt, falls die Methode statisch aus dem Kontext eines zusätzlichen Objektes aufgerufen wird).
Beispiel #2 Einige Beispiele für die $this-Pseudovariable
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: $this ist definiert (A) $this ist nicht definiert. $this ist definiert (B) $this ist nicht definiert. newUm eine Instanz einer Klasse zu erzeugen, muss das new-Schlüsselwort verwendet werden. Ein Objekt wird immer erzeugt, außer wenn das Objekt einen definierten Konstruktor besitzt, der aufgrund eines Fehlers eine Exception wirft. Klassen sollten vor ihrer Instantiierung definiert werden (in manchen Fällen ist dies eine Notwendigkeit). Wenn ein string mit dem Namen einer Klasse mit new genutzt wird, wird eine neue Instanz dieser Klasse erzeugt. Falls sich die Klasse in einem Namensraum befindet, muss der vollqualifizierte Name hierfür genutzt werden. Beispiel #3 Eine Instanz erzeugen
<?phpIm Kontext einer Klasse ist es möglich, neue Objekte mit new self und new parent anzulegen. Wenn man eine bereits erzeugte Instanz einer Klasse einer neuen Variablen zuweist, wird die neue Variable auf die selbe Instanz zugreifen wie das Objekt, das zugewiesen wurde. Dieses Verhalten ist das selbe, wenn man Instanzen an Funktionen übergibt. Eine Kopie eines bereits erzeugten Objektes erhält man, indem man es klont. Beispiel #4 Objektzuweisung
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$zugewiesen wird diesen Wert haben"
}
Mit PHP 5.3.0 wurden neue Möglichkeiten zur Erzeugung von Instanzen eines Objekts eingeführt: Beispiel #5 Erzeugen neuer Objekte
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: bool(true) bool(true) bool(true) extendsEine Klasse kann Methoden und Eigenschaften einer anderen Klasse erben, indem man das extends-Schlüsselwort in der Deklaration benutzt. Es ist nicht möglich, mehrere Klassen zu erweitern; eine Klasse kann nur eine einzige Basisklasse beerben. Die geerbten Methoden und Eigenschaften können durch eine Neudeklaration mit dem gleichen Namen wie in der Elternklasse überschrieben werden. Falls die Elternklasse eine Methode als final definiert hat, kann diese Methode nicht überschrieben werden. Es ist möglich, auf die überschriebenen Methoden oder statischen Eigenschaften zuzugreifen, wenn diese mittels parent:: referenziert werden.
Wenn Methoden überschrieben werden, sollte die Parametersignatur gleich
bleiben; andernfalls wird PHP einen Beispiel #6 Einfache Vererbung
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: Erweiternde Klasse ein Standardwert ::classMit PHP 5.5 kann auch das Schlüsselwort class für die Namensauflösung einer Klasse verwendet werden. Man erhält den vollständig qualifizierten Namen der Klasse ClassName durch Verwendung von ClassName::class. Dies ist vor allem dann praktisch, wenn mit Namensräumen gearbeitet wird.
Beispiel #7 Auflösung von Klassennamen
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: NS\ClassName |