Функції для роботи з класами та об'єктами

 

У РНР існує кілька стандартних функцій для роботи з класами та об'єктами. Розглянемо деякі функції для роботи з класами та об'єктами в контексті 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.