Главная Новости

Метод call в PHP


Опубликовано: 05.09.2018

видео Метод call в PHP

The Closure call Method in PHP 7

Специальный метод "__call()" предназначен для создания динамических методов. Если метод "__call()" перегружен в классе, обращение к несуществующему методу не приведёт к ошибке, а передаст управление методу "__call()". В качестве первого параметра метод принимает имя вызываемого метода, а в качестве второго массив, содержащий в качестве элементов параметры, которые были переданы при вызове метода. В отличие от других языков программирования, в PHP отсутствуют функции с переменным количеством параметров. Тем не менее, при помощи специального метода "__call()" можно эмулировать наличие таких функций в классе.



Продемонстрируем пример, для этого создадим класс "_byCall" который предоставит два рабочих метода это "byMin" и "byMax", принимающие произвольное количество числовых параметров и определяющие минимальное и максимальное значение.

class _byCall { public function __call($_name, $_param) { if (!is_array($_param)) return false; return ($_name == 'byMax') ? max($_param) : min($_param); } } $new_byCall = new _byCall(); echo $new_byCall->byMax(123, 234, 324, 4443, 234) # 4443 .'<br>'. $new_byCall->byMin(231, 123, 31, 61, 324); # 31

В зависимости от вызываемого метода "byMax" или "byMin", используется два разных способа для поиска результата, если не передано ни одного аргумента, возвращается значение "false". Важно отметить, что вызов методов при помощи оператора разрешения области видимости "::" для динамических классов, заканчивается ошибкой. Для обращения к динамическим методам обязательно требуется создание объекта. Взаимодействие специального метода "__call()" с уже существующими в классе методами отличается от акцессоров "__get()" и "__set()", если метод существует закрытый или открытый, то "__call()" не задействуется.


How to use jQuery AJAX method to call a PHP page

Пример:

class _byCall { public function __call($_name, $_param) { if (!is_array($_param)) return false; return ($_name == 'byMax') ? max($_param) : min($_param); } public function byMax($a, $b) { return 'Функция byMax'; } public function byMin($a, $b) { return 'Функция byMin'; } } $new_byCall = new _byCall(); echo $new_byCall->byMax(123, 234, 324, 4443, 234) # Результат: Функция byMax; .'<br>'. $new_byCall->byMin(231, 123, 31, 61, 324); # Результат: Функция byMin;


Класс, члены класса, методы unset, call PHP

tillad

4191

rss