11.3. Объекты и классы
Эти функции возвращают информацию об объектах и о классах. string get_class(object variable)
Функция get_class (листинг 11.72) возвращает имя класса для заданного объекта. Для получения аналогичной информации от метода класса можно использовать константу __CLASS__ . При этом PHP всегда возвращает имена классов в нижнем регистре.

Листинг 11.72. Функция getclass

<?php
class animal
{
var $name;
}
$gus = new animal;
print("Gus принадлежит к новому типу " . get_class($gus) .
"<br>n"); ?>

array get_class_methods(string class) array get_class_methods(object instance)
Функция get_class_methods (листинг 11.73) возвращает массив имен методов для заданного класса. При этом можно задать как имя класса, так и экземпляр класса.

Листинг 11.73. Функция get_class_methods

<?php
class dog
{
var $name="none"; var $sound="woof!"; function speak()
{
print($this->sound);
}
}
$gus = new dog; $gus->name = "Gus"; 
foreach(get_class_methods($gus) as $method)
{
print("$method<br>n");
}
>

array get_class_vars(string class)
Функция get_class_vars (листинг 11.74) возвращает массив, содержащий свойства класса и их значения по умолчанию. Сравните эту функцию с функцией get_object_vars.

Листинг 11.74. Функция get_class_vars, get_object_vars

<?php
class animal
{
var $name="none";
var $age=0;
var $color="none";
}
$gus = new animal; $gus->name = "Gus"; $gus->age = 7;
$gus->color = "black and tan"; print("<b>get_class_vars</b><br>n"); foreach(get_class_vars("animal") as $key=>$val)
{
print("$key=$val<br>n");
}
print("<br>n");
print("<b>get_object_vars</b><br>n"); foreach(get_object_vars($gus) as $key=>$val)
{
print("$key=$val<br>n");
}
?>

array get_object_vars(object data)
Функция get_object_vars возвращает массив с описанием свойств объекта и их значения. Пример использования этой функции можно найти в примере использования функции get_class_vars.
string get_parent_class(object variable) string get_parent_class(string class)
Функция get_parent_class (листинг 11.75) возвращает имя порождающего класса для объекта или класса. 
Листинг 11.75. Функция get_parent_class

<?php
class animal
{
var $name;
}
class dog extends animal
{
var $owner;
}
$gus = new dog; $gus->name = "Gus";
//Gus принадлежит к типу собак, который принадлежит к типу живот­ных
print("$gus->name is of type " .
get_class($gus) . ", который принадлежат к типу ". get_parent_class($gus) . "<BR>n");
?>

boolean is_a(object instance, string class)
Функция is_a (листинг 11.76) возвращает значение TRUE, если заданный объект является членом класса или одного из порождающих классов.

Листинг 11.76. Функция is_a

<?php
class Fruit
{
var $color;
}
class Apple extends Fruit
{
var $variety;
}
$a = new Apple; // истина
if(is_a($a, 'Fruit'))
{
$a->color = 'yellow';
}
// истина
if(is_a($a, 'Apple'))
{
$a->variety = 'Fuji';
}
// ложь
if(is_a($a, 'Vegetable'))
{
$a->vitamin = 'E';
print_r($a);

boolean is_subclass_of(object instance, string class)
Функция is_subclass_of используется для проверки, является ли объект подклассом указанного класса.
boolean method_exists(object variable, string method)
Функция method_exists (листинг 11.77) возвращает значение TRUE, если указанный метод в указанном объекте существует.

Листинг 11.77. Функция method_exists

<?php
class animal {
var $name;
}
class dog extends animal
{
var $owner; function speak()
{
print("woof!");
}
}
$gus = new dog; $gus->name = "Gus"; if(method_exists($gus, "speak"))
{
$gus->speak();
}
?>