downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  

<ccvs_voidcall_user_method_array>
Last updated: Sat, 29 Oct 2005

XII. Class/Object Functions

Introduction

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).

Requirements

No external libraries are needed to build this extension.

Installation

There is no installation needed to use these functions; they are part of the PHP core.

Runtime Configuration

This extension has no configuration directives defined in php.ini.

Resource Types

This extension has no resource types defined.

Predefined Constants

This 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)
{
   foreach (
get_object_vars($obj) as $prop => $val) {
       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)
{
   if (
is_subclass_of($GLOBALS[$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_declared_interfaces --  Returns an array of all declared interfaces
get_object_vars -- Returns an associative array of object properties
get_parent_class -- Retrieves the parent class name for object or class
interface_exists -- Checks if the interface has been defined
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
property_exists --  Checks if the object or class has a property


add a note add a note User Contributed Notes
Class/Object Functions
There are no user contributed notes for this page.




<ccvs_voidcall_user_method_array>
Last updated: Sat, 29 Oct 2005
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://phpbuilder.com/
Last updated: Tue Nov 1 20:20:59 2005 EST
Columns / Articles | Tips / Quickies | News | News Linking and RSS Feeds | Shared Code Library
Mail Archives | Support / Discussion Forums | Get Started! Links | Contribute! | Docs