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 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] Description mixedcall_user_method stringmethod_name objectobj mixedparameter mixed... 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] Description mixedcall_user_method_array stringmethod_name objectobj arrayparamarr 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_exists Checks if the class has been defined Description boolclass_exists stringclass_name This function returns &true; if the class given by class_name has been defined, &false; otherwise. get_class Returns the name of the class of an object Description stringget_class objectobj 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_methods Returns an array of class methods' names Description arrayget_class_methods mixedclass_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: <function>get_class_methods</function> example ]]> Will produce: See also get_class_vars and get_object_vars. get_class_vars Returns an array of default properties of the class Description arrayget_class_vars stringclass_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. <function>get_class_vars</function> example $value) { echo "$name : $value\n"; } ?> ]]> Will produce: See also get_class_methods, get_object_vars get_declared_classes Returns an array with the name of the defined classes Description arrayget_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_vars Returns an associative array of object properties Description arrayget_object_vars objectobj 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 <function>get_object_vars</function> 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_class Retrieves the parent class name for object or class Description stringget_parent_class mixedobj 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_of is_a Returns true if the object is of this class or has this class as one of its parents Description boolis_a objectobject stringclass_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 Description boolis_subclass_of objectobject stringclass_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_exists Checks if the class method exists Description boolmethod_exists objectobject stringmethod_name This function returns &true; if the method given by method_name has been defined for the given object, &false; otherwise.