Есть ли способ эмулировать магический метод __call() PHP5 в PHP4?

StackOverflow https://stackoverflow.com/questions/76328

  •  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}!";
}

в качестве функции-члена эту работу выполнит.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top