| |
IX. Class/Object FunctionsIntroduction
These functions allow you to obtain information about classes
and instance objects. You can obtain the name of the class to
which an object belongs, as well as its member properties and
methods. Using these 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).
RequirementsNo external libraries are needed to build this extension. InstallationThere is no installation needed to use these
functions; they are part of the PHP core. Runtime ConfigurationThis extension has no configuration directives defined in php.ini. Resource TypesThis extension has no resource types defined. Predefined ConstantsThis extension has no constants defined. Examples
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.
Example 1. 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.
Example 2. 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 |
|
- Table of Contents
- call_user_method_array --
Call a user method given with an array of parameters [deprecated]
- call_user_method --
Call a user method on an specific object [deprecated]
- class_exists -- Checks if the class has been defined
- get_class_methods -- Returns an array of class methods' names
- get_class_vars --
Returns an array of default properties of the class
- get_class -- Returns the name of the class of an object
- get_declared_classes -- Returns an array with the name of the defined classes
- get_object_vars -- Returns an associative array of object properties
- get_parent_class -- Retrieves the parent class name for object or class
- is_a --
Returns TRUE if the object is of this class or has this class as
one of its parents
- is_subclass_of --
Returns TRUE if the object has this class as one of its parents
- method_exists -- Checks if the class method exists
|
Ecommerce shopping carts
Events management projects
Affiliates systems
Large sized web projects
Real estate and vacation rental projects
Asp.net and c# projects
|