24.3. Проверка классов в PHP
Проверка классов, а также методов является необходимым при создании или удалении классов. Функции, отвечающие за проверку классов и методов, прежде всего являются функциями, возвращающими булевыйтип. Это хорошо тем, что при написании скрипта для проверки условия можно использовать эту функцию непосредственно в самой операции условия и от того, какой результат будет возвращен, и будет происходить выполнение того или иного блока. К функциям проверки классов и методов классов на определенность относятся:
• method_exists(),
• class_exists().
Функция msthod_exists() проверяет существования метода указанного класса при определении объекта. Синтаксис данной функции:
bool method_exists(object object, string method_name)
Как и было сказано ранее, функция возвращает true или false. На месте параметра object, как правило, используют определенный объект, method_name — имя метода, т. е. имя существующей функции класса, объявленной при определении объекта. Когда все указанные параметры совпадают с существующими, просто происходит возврат значения true, в противном случае — false.
Для проверки существования самого класса, т. е. его имени, применят функцию class_exists(), похожую на method_exists, так как они обе возвращают одинаковые значения и принцип их работы практически аналогичен. Функция class_exists имеет следующий синтаксис:
bool class_exists (string class_name)
Параметр class_name содержит имя класса, наличие которого и нужно проверить.
ВНИМАНИЕ
Функции получили распространение в РНР 4-4.0b4 версии. Поэтому при использовании версии РНР 3 вы будете получать ошибку.
Пример использования описанных функций:
<?php
class shop {
var $fruits;
var $fruits1;
function shop($apple, $banana) {
$this->fruits = $apple;
$this->fruits1 = $banana;
}
function price($var, $var1) {
echo "Цена на ".$this->fruits." равна $var n <br> ";
echo "Цена на " . $this->fruits1. " равна $var1 n <br> ";
}
}
$bus = new shop("Яблоки", "Бананы");
$bus->price(10,15);
if(class_exists(Bus_stop))
echo "Функция class_exists(Bus_stop) = true <br>";
else
echo "Функция class_exists (Bus_stop) = false <br>";
if(class_exists(shop))
echo "Функция class_exists (shop) = true <br>";
else
echo "ФФункция class_exists (shop) = false <br>";
if (method_exists($bus,check1) )
echo "Функция method_exists ($bus, check1) = true <br>";
else
echo "Функция method_exists ($bus, check1) = false <br>";
if (method_exists($bus,price) )
echo "ФФункция method_exi.sts ($bus, price) = true <br>";
else
echo "Функция method_exi.sts ($bus, price) = false <br>";
?>
В примере показано, как происходит обращение функции к имеющимся классам и методам, а после этого и к неимеющимся. Обратите внимание на результат работы этого примера:
Цена на Яблоки равна 10
Цена на Бананы равна 15
Функция class__exists(Bus_stop) = false
Функция class_exists (shop) = true
Функция method__exists (Object, check1) = false
Функция method_exists (Object, price) = true
Первые две строчки являются программными строками и на данном этапе они не представляют никакого интереса для нас. Все идущие далее строки и проявляют особенности работы функций. Когда мы проверили на существование класса по имени Bus_stop, его, конечно же, не оказалось, следовательно функция вернула значение false. Класс под именем shop существует, поэтому функция вернула true. Аналогична и проверка на существование метода.