Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  PHP und OOP
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* 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,




 


Verbesserungen des OOP-Konzepts in PHP4
 






© 2001-2005 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de