php-resource

PHP Handbuch

Klassen- und Objekt-Funktionen

XII. Klassen- und Objekt-Funktionen

Einführung

Übersicht

Diese Funktionen ermöglichen Ihnen den Zugriff auf Informationen über Klassen und Objektinstanzen. Sie können den Namen der Klasse ermitteln, zu der ein Objekt gehört, sowie ihre Eigenschaften und -methoden. Mit diesen Funktionen können Sie nicht nur die Klassenmitgliedschaft eines Objektes herausfinden, sondern auch ihre Abstammung (d. h. welche Klasse die des Objektes erweitert).

Anwendungsbeispiel

In diesem Beispiel definieren wir zuerst eine Basisklasse und eine Erweiterung dieser Klasse. Die Basisklasse beschreibt ein beliebiges Gemüse, ob es eßbar ist oder nicht, sowie seine Farbe. Die Subklasse Spinat fügt eine Methode hinzu, um sie zu kochen und eine weitere, um herauszufinden, ob sie gekocht ist.

Beispiel 1. classes.inc

<?php

// Basisklasse mit Eigenschaften und Methoden
class Gemuese {

    var
$essbar;
    var
$farbe;

    function
Gemuese( $essbar, $farbe="grün" ) {
        
$this->essbar = $essbar;
        
$this->farbe = $farbe;
    }

    function
ist_essbar() {
        return
$this->essbar;
    }

    function
welche_farbe() {
        return
$this->farbe;
    }
    
}
// Ende der Klasse Gemuese

// erweitert die Basisklasse
class Spinat extends Gemuese {

    var
$gekocht = false;

    function
Spinat() {
        
$this->Gemuese( true, "grün" );
    }

    function
koche_es() {
        
$this->gekocht = true;
    }

    function
ist_gekocht() {
        return
$this->gekocht;
    }
    
}
// Ende der Klasse Spinat

?>

Jetzt instantiieren wir zwei Objekte von diesen Klassen und geben Informationen über sie aus, einschließlich ihrer Abstammung. Wir definieren auch einige Hilfsfunktionen, hauptsächlich um eine hübsche Ausgabe der Variablen zu erhalten.

Beispiel 2. test_script.php

<pre>
<?php

include "classes.inc";

// utility functions

function zeige_vars($obj) {
    
$arr = get_object_vars($obj);
    while (list(
$prop, $val) = each($arr))
        echo
"\t$prop = $val\n";
}

function
zeige_methoden($obj) {
    
$arr = get_class_methods(get_class($obj));
    foreach (
$arr as $method)
        echo
"\tfunction $method()\n";
}

function
klassen_abstammung($obj, $class) {
    global $
$obj;
    if (
is_subclass_of($$obj, $class)) {
        echo
"Objekt $obj gehört zur Klasse ".get_class($$obj);
        echo
" einer Subklasse von $class\n";
    } else {
        echo
"Object $obj 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";
zeige_vars($veggie);

// und Methoden von leafy
echo "\nleafy: Methoden\n";
zeige_methoden($leafy);

echo
"\nAbstammung:\n";
klassen_abstammung("leafy", "Spinat");
klassen_abstammung("leafy", "Gemuese");
?>
</pre>

Wichtig ist in diesem Beispiel, dass das Objekt $leafy eine Instanz der Klasse Spinat ist, die eine Subklasse von Gemuese ist. Darum gibt der letzte Teil des obigen Skripts folgendes aus:

[...]
Abstammung:
Objekt leafy gehört nicht zu einer Subklasse von Spinat
Objekt leafy gehört zur Klasse spinat einer Subklasse von Gemuese

Inhaltsverzeichnis
call_user_method_array -- Call a user method given with an array of parameters [deprecated]
call_user_method -- Ruft eine benannte Methode eines Objekts auf [deprecated]
class_exists -- Checks if the class has been defined
get_class_methods -- Ermittelt die Namen der definierten Methoden einer Klasse
get_class_vars -- Liefert die Vorgabeeigenschaften einer Klasse
get_class -- Ermittelt den Klassennamen eines Objekts
get_declared_classes -- Ermittelt die Namen der definierten Klassen
get_declared_interfaces -- Returns an array of all declared interfaces
get_object_vars -- Liefert die Elemente eines Objekts
get_parent_class -- Gibt den Namen der Elternklasse eines Objektes zurück
interface_exists -- Checks if the interface has been defined
is_a -- Checks if the object is of this class or has this class as one of its parents
is_subclass_of -- Prüft ob ein Objekt von der angegebenen Klasse abstammt
method_exists -- Prüft on eine Methode innerhalb eines Objekts existiert
property_exists --  Checks if the object or class has a property


Anmerkungen zum PHP Handbuch
Neue Anmerkung schreiben
 

E-Shop 2.0: die neue Generation



 

Neuzugänge PHP MySQL Tutorials

Joomla! Starterhilfe

Dieses Tutorial begleitet Sie bei dem Einstieg in die Welt von dem CMS Joomla!.

17.01.2012 werninator | Kategorie: MySQL
Objektorientiertes Programmieren

Dieses Tutorial beschreibt sehr gut die Wirkunsweise von objektorientiertes Programmieren. Also bestens geeignet um das objektorientierte Programmieren zu verstehen.

07.12.2010 phpsven | Kategorie: PHP
Tutorials zu Facebook Anwendungen mit PHP

In mehreren Tutorials wird der Zugriff auf Facebook Daten mittels Graph API, FQL und REST API erklärt. Alle Codebeispiele liegen zum Ausprobieren in einem SVN, bzw. github Repository bereit.

06.12.2010 abouttheweb | Kategorie: PHP