Глава 24. Функции работы с классами и объектами в PHP
Детально изучив классы, а в частности принципы построения, способы обращения и вызова, перейдем непосредственно к рассмотрению вопроса, связанного с функциями работы с классами. Прежде всего эти функции созданы для того, чтобы получать информацию о существующих классах и их объектах. Благодаря этим функциям вы можете получить название класса, которому принадлежит тот или иной объект, а также его свойства и методы. Данные функции могут определить не только принадлежность классу его объекта, но также и его происхождение, т. е. какой класс является объектным распространением класса. Мы рассмотрим сначала функции вызова методов пользователя, выдаваемых массивом параметров, а затем непосредственно основные функции классов и объектов. Благодаря такой последовательности изложения материала вы сможете понять принципы программирования классов и совершения операций над ними. Эта глава состоит из следующих тем:
• вызов методов пользователя, выдаваемых массивом параметров;
• вызов методов пользователя классов;
• проверка классов;
• возврат параметров класса;
• возврат массива параметров объекта;
• определение существующих классов;
• программирование при помощи функций работы с классами.
24.1. Вызов методов пользователя, выдаваемых массивом параметров
После того как мы научились создавать функции, производить вызов этих функции, используя необходимые параметры, перейдем к автоматическому способу вызова методов пользователя. Чтобы произвести обращение к функции, содержащей
множество параметров, используют функцию call_user_func_array(). Эта функция позволяет задавать необходимое количество значений, используемых вызываемой функцией:
mixed call_user_func_array (string function_name [, array param])
Синтаксис наглядно показывает принцип работы функции. Строка параметра function_nams отвечает за название функции, вызов которой и будет производиться. Параметр param задается в качестве значений массива и производит передачу указанных здесь значений в вызываемую функцию. Это очень удобно. Также что касается возвращаемого значения функции, то оно фиксированное, т. е. постоянное. Например:
<?php
function check($var, $val) {
echo "***Вводимое значение $var сравнивается с имеющимся: <br>";
if ($var == "Sasha" & $val == "Sveta") {
echo"Произошло совпадение с установленными параметрами: <br>";
echo "$var<br>";
echo "$val ";
}
else
echo "Сравнение прошло успешно, подобных значений $var и $val нет ";
echo "***n <br>";
}
$c = "Sveta";
$host = 5;
$me = "Igor";
call_user_func_array('check', array("car",$host)); call_user_func_array('check', array("Sasha", $c));
call_user_func_array('check', array("dog",$me));
?>
Пример подобран таким образом, чтобы как можно проще попытаться объяснить вам принципы работы данной функции. В начале выполнения данного скрипта происходит задание значений параметров переменным $с, $host, $me. В реальном
режиме работы данные параметры могут задаваться непосредственно через форму. Для облегчения поставленной задачи мы будем использовать такой метод. После этого производим три раза вызов функции с массивом значений, вносимых в имеющуюся функцию по имени check. После передачи необходимых значений этой функции работу по выполнению скрипта начинает производить функция check(). Проделав в строгой последовательности все операции, получаем следующий результат:
***Вводимое значение car сравнивается с имеющимся: Сравнение прошло успешно, подобных значений car и 5 нет***
значение Sasha сравнивается с Произошло совпадение с установленными параметрами: Sasha
Sveta ***
***Вводимое значение dog сравнивается с имеющимися:
Сравнение прошло успешно, подобных значений dog и Igor нет***
Думаем, в последовательности выводимого результата не составит труда разобраться.
Функция call_user_func_array() получила распространение в РНР 4—4.0.4.
ВНИМАНИЕ
Эта функция была добавлена к коду CVS после выпуска РНР 4.0.4pl1.
Аналогичную операцию проделывает другая, похожая на эту, функция call_user_func(). По принципу работы данные функции практически ничем не отличимы. Единственная особенность заключается в том, что последняя производит задание только одного значения параметра вызываемой функции. Функция call_user_func() имеет следующий синтаксис:
mixed call_user_func(string function_narne [, mixed parameter [, mixed... ] ])
Покажем работу данной функции на примере:
<?php
function check ($var) {
print "Вам необходимо приобрести $var пиджак <br>";
}
call_user_func('check', "красный");
call_user_func('check', "синий");
?>
Из примера видно, как происходит задание передаваемого значения в вызываемую функцию check(). Последовательно заданные значения красный, синий в функцию check() дали следующий результат выполнения скрипта:
Вам необходимо приобрести красный пиджак
Вам необходимо приобрести синий пиджак
Функция call_user_func() также отличается от функции call_user_func_array() тем, что она получила распространение немного раньше, чем последняя.
Описанные в данном параграфе функции не работают с классами и объектами, но они помогут в изучении классов и будут неплохой опорой при написании скриптов.