Функції для роботи з класами та об'єктами
У РНР існує кілька стандартних функцій для роботи з класами та об'єктами. Розглянемо деякі функції для роботи з класами та об'єктами в контексті PHP5.
get_class_methods ()
Функція get_class_methods () повертає масив імен методів класу із заданим ім'ям. Синтаксис функції get_class_methods ():
array get_class_methods (string імя_класса)
Простий приклад використання get_class_methods () - Отримання списку методів класу:
<? Php
...
class Airplane extends Vehicle {
public $wingspan;
function setWingSpan ($wingspan) {
$this-> wingspan = $wingspan;
}
function getWingSpan () {
return $ this-> wingspan;
}
}
$cls_methods = get_class_methods (Airplane);
// Масив $ cls_methods містить імена всіх методів,
// Оголошених в класах "Airplane" і "Vehicle"
?>
Як видно з лістингу, функція get_class_methods () дозволяє легко отримати інформацію про всі методи, підтримуваних класом.
get_class_vars ()
Функція get_class_vars () повертає масив імен атрибутів класу із заданим ім'ям. Синтаксис функції get_class_vars ():
array get_class_vars (string імя_класса)
Приклад використання функції get_class_vars () - отримання списку атрибутів (властивостей) класу:
<? Php
class Vehicle {
public $model;
public $ urrent_speed;
}
class Airplane extends Vehicle {
public $Swingspan;
}
$a_class = "Airplane";
$attribs = get_class_vars ($a_class);
// $ Attribs = array ("wingspan", "model", "current_speed")
?>
У розглянутому прикладі масив $attribs заповнюється іменами всіх атрибутів класу Airplane.
get_object_vars ()
Функція get_object_vars () повертає асоціативний масив з інформацією про всі атрибути об'єкту із заданим ім'ям. Синтаксис функції get_object_vars ():
array get_object_vars (object ім’я_об’єкта)
Приклад використання функції get_object_vars () - отримання інформації про змінні об'єкта:
<? Php
class Vehicle {
public $wheels;
}
class Land extends Vehicle {
public $engine;
}
class car extends Land {
var $doors;
function car ($ doors, $ eng, $ wheels) {
$this-> doors = $doors;
$this-> engine = $eng;
$this-> wheels = $wheels;
}
function get_wheels () {
return $this-> wheels;
}
}
$toyota = new car (2,400,4);
$vars = get_object_vars ($toyota);
while (list ($key, $value) = each ($vars)):
print "$key ==> $value";
endwhile;
// Вихідні дані:
// Wheels ==> 4
// Engine ==> 400
// Doors ==> 2
?>
Функція get_object_vars () дозволяє швидко отримати всю інформацію про атрибути конкретного об'єкта та їх значеннях у вигляді асоціативного масиву.
method_exists ()
Функція method_exists () перевіряє, чи підтримується об'єктом метод із заданим ім'ям. Якщо метод підтримується, функція повертає TRUE, в іншому випадку повертається FALSE. Синтаксис функції method_exists ():
bool method_exists (object ім’я_об’єкта. string імя_метода)
Приклад використання методу method_exists () - перевірка підтримки методу об'єктом:
<? Php
class Vehicle {
// ...
}
class Land extends Vehicle {
public $fourWheel;
function setFourWheelDrive () {
$this-> fourWeel = 1;
}
}
// Створити об'єкт з ім'ям $ саr
$car = new Land;
// Якщо метод "fourWheelDrive" підтримується класом "Land"
// Або "Vehicle", виклик method_exists повертає TRUE;
// У протилежному випадку повертається FALSE.
// У даному прикладі method_exists () повертає TRUE.
if (method_exists ($ car, "setfourWheelDrive")):
print "Автомобіль з 4-ма ведучими колесами";
else:
print "Автомобіль з 2-ма ведучими колесами";
endif;
?>
У розглянутому прикладі функція method_exists () перевіряє, чи підтримується об'єктом $car метод з ім'ям setFourWheelDrive (). Якщо метод підтримується, функція повертає логічну істину і фрагмент виводить відповідне повідомлення. В іншому випадку повертається FALSE і виводиться інше повідомлення.
get_class ()
Функція get_class () повертає ім'я класу, до якого належить об'єкт із заданим ім'ям. Синтаксис функції get_class ():
string get_class (object ім’я_об’єкта);
Приклад використання get_class () - отримання імені класу:
<? Php
class Vehicle {
}
class Land extends Vehicle {
}
// Створюємо об'єкт з ім'ям $саr:
$car = new Land;
// Змінній $ class_a присвоюється рядок "Land":
$class_a = get_class ($car);
echo $class_a;
?>
У розглянутому прикладі змінної $class_a присвоюється ім'я класу, на основі якого був створений об'єкт $саr.
get_parent_class ()
Функція get_parent_class () повертає ім'я батьківського класу (якщо він є) для об'єкту із заданим ім'ям. Синтаксис функції get_parent_dass ():
string get_parent_class (object ім’я_об’єкта);
Приклад отримання імені батьківського класу функцією get_parent_class ():
<? Php
class Vehicle {
//...
}
class Land extends Vehicle {
//...
}
// Створюємо об'єкт з ім'ям $ саr:
$саr = new Land;
// Змінній $parent присвоюється рядок "Vehicle":
$parent = get_parent_class ($ car);
?>
При виклику get_parent_class () змінній $parent буде присвоєний рядок "Vehicle".
is_subclass_of ()
Функція is_subclass_of () перевіряє, чи був об'єкт створений на базі класу, що має батьківський клас із заданим ім'ям. Функція повертає TRUE, якщо перевірка дає позитивний результат, і FALSE в іншому випадку. Синтаксис функції is_subclass_of ():
bool is_subclass_of (object об'єкт, string імя_класса)
Приклад використання функції is_subdass_of ():
<? Php
class Vehicle {
//...
}
class Land extends Vehicle {
//...
}
$auto = new Land;
// Змінній $is_subclass присвоюється TRUE
$is_subclass = is_subclass_of ($auto, "Vehicle");
?>
У розглянутому прикладі змінншй $is_subclass () присвоюється ознака того, чи належить об'єкт $auto до підкласу батьківського класу Vehicle. У наведеному фрагменті $auto відноситься до класу Vehicle; отже $is_subclass () буде присвоєно значення TRUE.
get_declared_classes ()
Функція get_declared_classes () повертає масив з іменами всіх визначених класів. Синтаксис функції get_declared_classes ():
array get_declared_classes ()
Приклад отримання списку класів функцією get_declared_classes ():
<? Php
class Vehicle {
//...
}
class Land extends Vehicle {
//...
}
$declared_classes = get_declared_classes ();
// $declared_classes = array ("Vehicle", "Land")
?>
Ми розглянули лише деякі основні функції, призначені для роботи з класами та об'єктами PHP. Для ознайомлення з повним переліком таких функцій зверніться до довідника функцій PHP.