Есть ли способ эмулировать магический метод __call() PHP5 в PHP4?
-
09-06-2019 - |
Вопрос
В PHP5 есть "волшебный метод" __call()
это может быть определено в любом классе, который вызывается при вызове неопределенного метода - это примерно эквивалентно Ruby method_missing
или Perl's AUTOLOAD
.Возможно ли сделать что-то подобное в более старых версиях PHP?
Решение
Эта статья, Использование Перегрузки вызова метода в PHP 4 там, на Дэвшед, могло бы помочь.
Другие советы
Самое важное, чего мне не хватало, это того, что __call
существует в PHP4, но вы должны включить его для каждого класса, вызвав overload()
, как видно из документы по php здесь .К сожалению, сигнатуры функции __call() различаются между PHP4 и PHP5, и, похоже, нет способа создать реализацию, которая будет выполняться в обоих вариантах.
Я помню, что использовал его, и небольшой поиск в Google подсказывает, что
function __call($method_name, $parameters, &$return)
{
$return_value = "You called ${method_name}!";
}
в качестве функции-члена эту работу выполнит.