<?php
// Registrieren des Autoloaders zum Laden von Klassen
spl_autoload_register();
function zeigeEigenschaften($obj)
{
foreach (get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
function zeigeMethoden($obj)
{
$arr = get_class_methods(get_class($obj));
foreach ($arr as $method) {
echo "\tFunktion $method()\n";
}
}
function objGehoertZu($obj, $class)
{
if (is_subclass_of($obj, $class)) {
echo "Objekt gehört zur Klasse " . get_class($obj);
echo ", einer Subklasse von $class\n";
} else {
echo "Objekt gehört nicht zu einer Subklasse von $class\n";
}
}
// Instantiiere zwei Objekte
$veggie = new Gemuese(true, "blau");
$leafy = new Spinat();
// Informationen über die Objekte ausgeben
echo "veggie: KLASSE " . get_class($veggie) . "\n";
echo "leafy: KLASSE " . get_class($leafy);
echo ", ELTERN " . get_parent_class($leafy) . "\n";
// Zeige Eigenschaften von veggie
echo "\nveggie: Eigenschaften\n";
zeigeEigenschaften($veggie);
// und Methoden von leafy
echo "\nleafy: Methoden\n";
zeigeMethoden($leafy);
echo "\nAbstammung:\n";
objGehoertZu($leafy, Spinat::class);
objGehoertZu($leafy, Gemuese::class);
?>
Die obigen Bespiele erzeugen folgende Ausgabe:
veggie: KLASSE Gemuese
leafy: KLASSE Spinat, ELTERN Gemuese
veggie: Eigenschaften
essbar = 1
farbe = blau
leafy: Methoden
Funktion __construct()
Funktion kocheEs()
Funktion istGekocht()
Funktion istEssbar()
Funktion welcheFarbe()
Abstammung:
Objekt gehört nicht zu einer Subklasse von Spinat
Objekt gehört zur Klasse Spinat, einer Subklasse von Gemuese
Ein wichtiger Punkt im obigen Beispiel ist, dass das Objekt
$leafy eine Instanz der Klasse
Spinat ist, die eine Subklasse
von Gemuese ist.