Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

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. Аналогична и проверка на существование метода.

<< Предыдущий параграф Следующий параграф >>
Оглавление