Class/Object FunctionsClasses/ObjectsIntroductionAbout
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 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).
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
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
]]>
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:
call_user_method
Call a user method on an specific object [deprecated]
Descriptionmixedcall_user_methodstringmethod_nameobjectobjmixedparametermixed...
The call_user_method function is deprecated
as of PHP 4.1.0, use the call_user_func variety
with the array(&$obj, "method_name") syntax instead.
Calls the method referred by method_name from
the user defined obj object. An example of usage
is below, where we define a class, instantiate an object and use
call_user_method to call indirectly its
print_info method.
NAME = $name;
$this->TLD = $tld;
}
function print_info($prestr="") {
echo $prestr."Country: ".$this->NAME."\n";
echo $prestr."Top Level Domain: ".$this->TLD."\n";
}
}
$cntry = new Country("Peru","pe");
echo "* Calling the object method directly\n";
$cntry->print_info();
echo "\n* Calling the same method indirectly\n";
call_user_method ("print_info", $cntry, "\t");
?>
]]>
See also call_user_func_array,
call_user_func, and
call_user_method_array.
call_user_method_array
Call a user method given with an array of parameters [deprecated]
Descriptionmixedcall_user_method_arraystringmethod_nameobjectobjarrayparamarr
The call_user_method_array function is deprecated
as of PHP 4.1.0, use the call_user_func_array variety
with the array(&$obj, "method_name") syntax instead.
Calls the method referred by method_name from
the user defined obj object, using the parameters
in paramarr.
See also:
call_user_func_array,
call_user_func,
call_user_method.
This function was added to the CVS code after release of PHP 4.0.4pl1
class_existsChecks if the class has been definedDescriptionboolclass_existsstringclass_name
This function returns &true; if the class given by
class_name has been defined,
&false; otherwise.
get_classReturns the name of the class of an objectDescriptionstringget_classobjectobj
This function returns the name of the class of which the
object obj is an instance. Returns
&false; if obj is not an object.
get_class returns a user defined class name
in lowercase. A class defined in a PHP extension is returned
in its original notation.
See also get_parent_class,
gettype, and
is_subclass_of.
get_class_methodsReturns an array of class methods' namesDescriptionarrayget_class_methodsmixedclass_name
This function returns an array of method names defined for the
class specified by class_name.
As of PHP 4.0.6, you can specify the object itself instead of
class_name. For example:
get_class_methods example
]]>
Will produce:
See also get_class_vars and
get_object_vars.
get_class_vars
Returns an array of default properties of the class
Descriptionarrayget_class_varsstringclass_name
This function will return an associative array of default
properties of the class. The resulting array elements are in the
form of varname => value.
Uninitialized class variables will not be reported by
get_class_vars.
get_class_vars example
$value) {
echo "$name : $value\n";
}
?>
]]>
Will produce:
See also get_class_methods,
get_object_varsget_declared_classesReturns an array with the name of the defined classesDescriptionarrayget_declared_classes
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).
Also note that depending on what libraries you have compiled
into PHP, additional classes could be present. This means that
you will not be able to define your own classes using these
names. There is a list of predefined classes in the Predefined Classes section of
the appendices.
get_object_varsReturns an associative array of object propertiesDescriptionarrayget_object_varsobjectobj
This function returns an associative array of defined object properties
for the specified object obj. If variables
declared in the class of which the obj is an
instance, have not been assigned a value, those will not be returned
in the array.
Use of get_object_vars
x = $x;
$this->y = $y;
}
function setLabel($label) {
$this->label = $label;
}
function getPoint() {
return array("x" => $this->x,
"y" => $this->y,
"label" => $this->label);
}
}
// "$label" is declared but not defined
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));
$p1->setLabel("point #1");
print_r(get_object_vars($p1));
?>
]]>
The printout of the above program will be:
1.233
[y] => 3.445
)
Array
(
[x] => 1.233
[y] => 3.445
[label] => point #1
)
]]>
See also get_class_methods and
get_class_vars!
get_parent_classRetrieves the parent class name for object or classDescriptionstringget_parent_classmixedobj
If obj is an object, returns the name of the
parent class of the class of which obj is an
instance.
If obj is a string, returns the name of the parent
class of the class with that name. This functionality was added in PHP
4.0.5.
See also get_class and
is_subclass_ofis_a
Returns true if the object is of this class or has this class as
one of its parents
Descriptionboolis_aobjectobjectstringclass_name
This function returns &true; if the object is of this class or
has this class as one of its parents, &false; otherwise.
See also get_class,
get_parent_class, and
is_subclass_of.
is_subclass_of
Returns true if the object has this class as one of its parents
Descriptionboolis_subclass_ofobjectobjectstringclass_name
This function returns &true; if the object
object, belongs to a class which is a
subclass of class_name, &false; otherwise.
See also get_class,
get_parent_class and
is_a.
method_existsChecks if the class method existsDescriptionboolmethod_existsobjectobjectstringmethod_name
This function returns &true; if the method given by
method_name has been defined for the given
object, &false; otherwise.