diff --git a/functions/classobj.xml b/functions/classobj.xml
index 4ac3815f65..7e53cf7c21 100644
--- a/functions/classobj.xml
+++ b/functions/classobj.xml
@@ -2,6 +2,213 @@
Class/Object Functions
Classes/Objects
+
+
+ Introduction
+
+ About
+
+ These functions allow you to obtain information about classes
+ and instance objects. You can obtain the name of the class to
+ which a object belongs, as well as its member properties and
+ methods. Using this functions, you can find out not only the
+ class membership of an object, but also its parentage (i.e.
+ what class is the object class extending).
+
+
+
+ An example of use
+
+ In this example, we first define a base class and an extension
+ of the class. The base class describes a general vegetable,
+ whether it is edible or not and what is its color. The subclass
+ Spinach adds a method to cook it and another to
+ find out if it is cooked.
+
+
+
+ classes.inc
+
+<?php
+
+// base class with member properties and methods
+class Vegetable {
+
+ var $edible;
+ var $color;
+
+ function Vegetable( $edible, $color="green" ) {
+ $this->edible = $edible;
+ $this->color = $color;
+ }
+
+ function is_edible() {
+ return $this->edible;
+ }
+
+ function what_color() {
+ return $this->color;
+ }
+
+} // end of class Vegetable
+
+
+// extends the base class
+class Spinach extends Vegetable {
+
+ var $cooked = false;
+
+ function Spinach() {
+ $this->Vegetable( true, "green" );
+ }
+
+ function cook_it() {
+ $this->cooked = true;
+ }
+
+ function is_cooked() {
+ return $this->cooked;
+ }
+
+} // end of class Spinach
+
+?>
+
+
+
+
+ We then instantiate 2 objects from these classes and print out
+ information about them, including their class parentage.
+ We also define some utility functions, mainly to have a nice printout
+ of the variables.
+
+
+
+ test_script.php
+
+<pre>
+<?php
+
+include "classes.inc";
+
+// utility functions
+
+function print_vars($obj) {
+ $arr = get_object_vars($obj);
+ while (list($prop, $val) = each($arr))
+ echo "\t$prop = $val\n";
+}
+
+function print_methods($obj) {
+ $arr = get_class_methods(get_class($obj));
+ foreach ($arr as $method)
+ echo "\tfunction $method()\n";
+}
+
+function class_parentage($obj, $class) {
+ global $$obj;
+ if (is_subclass_of($$obj, $class)) {
+ echo "Object $obj belongs to class ".get_class($$obj);
+ echo " a subclass of $class\n";
+ } else {
+ echo "Object $obj does not belong to a subclass of $class\n";
+ }
+}
+
+// instantiate 2 objects
+
+$veggie = new Vegetable(true,"blue");
+$leafy = new Spinach();
+
+// print out information about objects
+echo "veggie: CLASS ".get_class($veggie)."\n";
+echo "leafy: CLASS ".get_class($leafy);
+echo ", PARENT ".get_parent_class($leafy)."\n";
+
+// show veggie properties
+echo "\nveggie: Properties\n";
+print_vars($veggie);
+
+// and leafy methods
+echo "\nleafy: Methods\n";
+print_methods($leafy);
+
+echo "\nParentage:\n";
+class_parentage("leafy", "Spinach");
+class_parentage("leafy", "Vegetable");
+?>
+</pre>
+
+
+
+
+ One important thing to note in the example above is that
+ the object $leafy is an instance of the class
+ Spinach which is a subclass of
+ Vegetable,
+ therefore the last part of the script above will output:
+
+
+
+
+ [...]
+Parentage:
+Object leafy does not belong to a subclass of Spinach
+Object leafy belongs to class spinach a subclass of Vegetable
+
+
+
+
+
+
+
+
+
+ get_class
+ Returns the name of the class of an object
+
+
+ Description
+
+
+ string get_class
+ object obj
+
+
+
+ This function returns the name of the class of which the
+ object obj is an instance.
+
+
+ See also get_parent_class
+
+
+
+
+
+
+ get_parent_class
+ Returns the name of the parent class of an object
+
+
+ Description
+
+
+ string get_parent_class
+ object obj
+
+
+
+ This function returns the name of the parent class to
+ the class of which the object obj
+ is an instance.
+
+
+ See also get_class
+
+
+
+
get_class_methods
@@ -47,7 +254,7 @@
get_object_vars
- Returns an array of object properties
+ Returns an associative array of object properties
Description
@@ -58,12 +265,58 @@
- This function returns an array of object properties for the
+ This function returns an associative array of object properties for the
specified object obj.
+
+
+ is_subclass_of
+
+ Determines if an object belongs to a subclass
+ of the specified class
+
+
+
+ Description
+
+
+ bool is_subclass_of
+ object obj
+ string superclass
+
+
+
+ This function returns true if the object obj,
+ belongs to a class which is a subclass of
+ superclass, false otherwise.
+
+
+
+
+
+
+ class_exists
+ Checks if the class has been defined
+
+
+ Description
+
+
+ bool class_exists
+ string class_name
+
+
+
+ This function returns true if the class given by
+ class_name has been defined,
+ false otherwise.
+
+
+
+
method_exists
@@ -86,6 +339,35 @@
+
+
+ get_declared_classes
+ Returns an array with the name of the defined classes
+
+
+ Description
+
+
+ array get_declared_classes
+ void
+
+
+
+ This function returns an array of the names of the declared classes
+ in the current script.
+
+
+
+ In PHP 4.0.1pl2, three extra classes are returned at the beginning of
+ the array: stdClass (defined in Zend/zend.c),
+ OverloadedTestClass (defined in
+ ext/standard/basic_functions.c) and Directory
+ (defined in ext/standard/dir.c).
+
+
+
+
+