| |
| * Link führt ins Internet |
|
| |
Metainformationen über Klassen und Objekte
|
|
Informationen, die man zur Laufzeit eines Skripts über eine Klasse oder eine von ihr abgeleitete Instanz erhalten kann, werden auch als Metainformationen bezeichnet.
Zu diesen Informationen zählen beispielsweise die Namen der Klasse von Objekten, die Namen sämtlicher Superklassen und Subklassen, sowie die Namen der Methoden einer Klasse.
In der folgenden Tabelle sind die seit PHP 4 zur Verfügung stehenden Funktionen zur Ermittlung der Metainformationen über Klassen und Objekte, aufgeführt.
| Funktion | Bedeutung |
| get_class($object) | Ergibt den Namen der Klasse des Objekts. |
| get_parent_class($object) | Ergibt den Namen der übergeordneten Klasse des Objekts. |
| method_exists($object,method) | Prüft, ob eine Methode existiert. |
| class_exists(classname) | Ermittelt, ob die Klasse definiert wurde. |
| is_subclass_off($object,superclassname) | Prüft, ob ein Objekt zu einer Unterklasse gehört. |
| is_a($object,classname) | Prüft, ob ein Objekt zu einer Klasse oder deren Elternklasse gehört. |
| get_class_methods(classname) | Gibt ein Array mit den Namen der Methoden einer Klasse zurück. |
| get_declared_classes() | Gibt die Namen aller deklarierter Klassen in einem Array zurück. Zusätzlich zu den benutzerdefinierten Klassen werden drei interne Klassen ausgegeben: stdClass, OberloadedTestClass, Directory. |
| get_class_vars(classname) | Diese Funktion gibt in einem Array die Namen der Eigenschaften der Klasse zurück. |
| get_objects_vars($object) | Mit dieser Funktion ermitteln Sie die Eigenschaften eines Objekts, also die tatsächlich genutzten Variablen der zugrunde liegenden Klasse. |
Einsatz von get_class(), get_parent_class() und get_class_methods()
Unter Verwendung des Klassendefinitionen des vorherigen Beispiels können z.B. mit Hilfe der Funktionen get_class(), get_parent_class() und get_class_methods() die folgenden Informationen über das Objekt $chipsatz1, bzw. der Klasse Chipsaetze ermittelt werden:
<?php
class Chip
{
function Chip() {
echo "Chip wurde produziert.<br>";
}
function produzieren($anzahl) {
$anzahl++;
return($anzahl);
}
}
class Chipsaetze extends Chip
{
function Chipsaetze() {
Chip::Chip();
echo "Chipsatz wurde produziert.<br>";
}
function produzieren($anzahl) {
$anzahl = Chip::produzieren($anzahl);
$anzahl = $anzahl*$anzahl;
return($anzahl);
}
}
$chipsatz1 = new Chipsaetze;
echo "<br>Klasse: ";
echo get_class($chipsatz1);
echo "<br>Elternklasse: ";
echo get_parent_class($chipsatz1);
echo "<br>------<br>";
$klasse = "Chipsaetze";
echo "<br>Methoden der Klasse $klasse: ";
$array = get_class_methods($klasse);
foreach ($array as $element) {
echo "<br>$element";
}
?>
|
Ausgabe
Chip wurde produziert.
Chipsatz wurde produziert.
Klasse: Chipsaetze
Elternklasse: Chip
------
Methoden der Klasse Chipsaetze:
Chipsaetze
Produzieren
Chip
|
Die Ausgabe zeigt, dass den Objekten der Klasse Chipsaetze insgesamt drei Methoden zur Verfügung stehen.
Einsatz von get_declared_classes()
Der Konstruktor Chip() wurde von der Elternklasse Chip geerbt. Um die in einem Skript deklarierten Klassen zu ermitteln, kann die Funktion get_declared_classes() verwendet werden.
Beispiel
<?php
class Chip
{
function Chip() {
echo "Chip wurde produziert.<br>";
}
function produzieren($anzahl) {
$anzahl++;
return($anzahl);
}
}
class Chipsaetze extends Chip
{
function Chipsaetze() {
Chip::Chip();
echo "Chipsatz wurde produziert.<br>";
}
function produzieren($anzahl) {
$anzahl = Chip::produzieren($anzahl);
$anzahl = $anzahl*$anzahl;
return($anzahl);
}
}
echo "<br>Deklarierte Klassen:<br>";
$array = get_declared_classes();
foreach ($array as $element) {
echo "<br>$element";
}
?>
|
Ausgabe
Deklarierte Klassen:
stdClass
OverloadedTestClass
Directory
com
Chip
Chipsaetze
|
Wie Sie sehen sind weit mehr Klassen definiert, sowohl die nutzerdefinierten als auch die vordefinierten Klassen werden ausgegeben.
Einsatz von get_class_vars() und get_object_vars()
Mit Hilfe der Funktionen get_class_vars() und get_object_vars() können die Klassenvariablen einer Klasse bzw. die Objektvariablen eines Objekts zurückgegeben werden. Das folgende Beispiel demonstriert die Verwendung dieser Funktionen.
Beispiel - get_class_vars()
<?php
class Fahrzeug
{
var $hersteller = "VW";
var $typ = "PKW";
var $klasse = "Mittel";
}
echo "Klassen-Variablen: ";
$array = get_class_vars("Fahrzeug");
foreach ($array as $element) {
echo "$element, ";
}
?>
|
Ausgabe
Klassen-Variablen: VW, PKW, Mittel,
|
Beispiel - get_object_vars()
<?php
class Fahrzeug
{
var $hersteller = "VW";
var $typ = "PKW";
var $klasse = "Mittel";
}
// Objekt
$meinAuto = new Fahrzeug;
$meinAuto->hersteller = "BMW";
$meinAuto->typ = "Motorad";
$meinAuto->klasse = "keine";
echo "Objekt-Variablen: ";
$array = get_object_vars($meinAuto);
foreach ($array as $element) {
echo "$element, ";
}
?>
|
Ausgabe
Objekt-Variablen: BMW, Motorad, keine,
|
|
|
|
|
|
|
|