Оглавление

Метод __call()

Подобно методу-получателю и методу-установщику, которые позволяют динамически обрабатывать доступ к свойствам в PHP-сценариях, метод __call() служит для того, чтобы организовать хранилище вызовов методов в объекте. При получении вызова метода, который не был определен в классе, по возможности вызывается метод __call(). Прототип этого метода выглядит следующим образом:

 

function __call($method, $arguments);

 

где $method — это строка, соответствующая вызванному методу, а $arguments — индексированный массив, содержащий параметры, передаваемые этому методу. Подобно методу-получателю и методу-установщику, метод __call() полезно использовать в тех случаях, когда весь список функций не доступен вплоть до начала выполнения сценария. Как вариант, метод __call() можно использовать для того, чтобы создать универсальный метод для обработки вызовов недействительных методов в PHP-сценариях, как показано в листинге 21.

 

class ParentClass {
    function __call($method, $params) {
        echo "Метод $method не существует!\n";
    }
}
class ChildClass extends ParentClass {
    function myFunction() {
        /* Логика функции */
    }
}
$inst = new ChildClass();
$inst->nonExistentFunction();

 

Во время выполнения этого кода будет вызван метод, который до этого не был определён. Однако вместо того чтобы генерировать неустранимую ошибку, недействительный вызов инициирует вызов метода __call(), в результате чего у вас будет возможность исправить ошибку.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити