PHP provides several functions that interact with objects and classes. This page covers some of the commonly used object-related functions. For the sake of convenience, we organize these functions into two categories.
The first category covers validation functions; we provide the list below. These functions allow us to examine if a given element (class, object, method, or property) exists; they return true if the referenced element (class, method, or property) exists; else, they return false.
We provide below their signature:
$boolean_exists = class_exists(className); $boolean_exists = method_exists(className, methodName); $boolean_exists = method_exists($object, methodName); $boolean_exists = property_exists(className, methodName); $boolean_exists = property_exists($object, propertyName);
The method class_exists() returns true if a given class exists. Functions method_exists() and property_exists() accept both class name and object name. It is important to note that we do not need to provide the "$" prefix when passing class names, but still need to provide the "$" prefix when passing object names.
The second category covers functions that retrieve various information about classes and objects; we provide the list below.
$name = get_class($object); $list_of_class_variables = get_class_vars(className); $list_of_class_methods = get_class_methods(className); $list_of_object_variables = get_object_vars($object);
The function get_class() returns the class name for an object. Functions get_class_vars() and get_class_methods() return a list of properties and methods of the class respectively.
Function get_object_vars() returns object variables along with their values. This function prints value of these variables because unlike a class, an object holds variables and their values. This list also includes those properties that are added on the fly. Since we cannot add methods dynamically to an object, having get_class_methods() is sufficient and perhaps, this is the reason why PHP does not provide get_object_methods() function!
Let us now demonstrate the usage of these functions using a simple PHP program (provided below). The program illustrates functions from both of the above categories. Further, to highlight the ability of get_object_vars() to print even dynamically added variables, we dynamically assign a variable, "zip" to the "$me_as_user" object.
<?php
class BasicUser {
var $userID, $name, $age, $city;
function __construct($varID, $varName, $varAge) {
$className = get_class($this);
echo "Calling Constructor() function for $className class <br>";
$this->userID = $varID;
$this->name = $varName;
$this->age = $varAge;
}
function set_city($varCity) {
$this->city = $varCity;
}
function print_userinfo() {
echo "<br>Printing User Details: <br>";
echo "Userid: $this->userID<br>";
echo "Name: $this->name<br>";
echo "Age: $this->age<br>";
echo "City: $this->city<br>";
}
}
if (class_exists('BasicUser')) {
$me_as_user = new BasicUser("ksimon", "Karuna Simon", 32);
$me_as_user->print_userinfo();
if (method_exists($me_as_user,'set_city')) {
$me_as_user->set_city("Chicago");
}
$me_as_user->print_userinfo();
if (property_exists($me_as_user, 'city')) {
$me_as_user->city = "New York";
}
$me_as_user->print_userinfo();
$class_vars = get_class_vars(get_class($me_as_user));
echo "<br>Printing ClassVariables:<br>";
print_r($class_vars);
$me_as_user->zip = 23232;
echo "<br><br>Printing Object Variables:<br>";
$object_vars = get_object_vars($me_as_user);
print_r($object_vars);
echo "<br><br>Printing Class Methods:<br>";
$class_methods = get_class_methods(get_class($me_as_user));
print_r($class_methods);
}
?>
The output (provided below) confirms the differences between get_class_vars() and get_object_vars(). When we print the list of object variables using get_object_vars(), it also prints dynamically added variables like "zip". Since "zip" does not exist as a variable of the original class (BasicUser), get_class_vars() does not print this variable.
Calling Constructor() function for BasicUser class Printing User Details: Userid: ksimon Name: Karuna Simon Age: 32 City: Printing User Details: Userid: ksimon Name: Karuna Simon Age: 32 City: Chicago Printing User Details: Userid: ksimon Name: Karuna Simon Age: 32 City: New York Printing ClassVariables: Array ( [userID] => [name] => [age] => [city] => ) Printing Object Variables: Array ( [userID] => ksimon [name] => Karuna Simon [age] => 32 [city] => New York [zip] => 23232 ) Printing Class Methods: Array ( [0] => __construct [1] => set_city [2] => print_userinfo )