PHP5 имеет «магический метод» __call()
, который может быть определен для любого класса, который вызывается при вызове неопределенного метода - он примерно эквивалентен method_missing
Ruby или Perl's AUTOLOAD
. Можно ли сделать что-то подобное в более старых версиях PHP?Есть ли способ подражать магическому методу __call() PHP5 в PHP4?
2
A
ответ
1
Эта статья, Using Method Call Overloading in PHP 4 на DevShed может помочь.
0
Я помню, используя его, и немного прибегая к помощи предполагает, что
function __call($method_name, $parameters, &$return)
{
$return_value = "You called ${method_name}!";
}
как функции члена будет делать эту работу.
2
Самый важный бит, который мне не хватало, заключался в том, что в PHP4 существует __call
, но вы должны включить его для каждого класса, вызвав overload()
, как видно из php docs here. К сожалению, сигнатуры функций __call() различаются между PHP4 и PHP5, и, похоже, не существует способа сделать реализацию, которая будет работать в обоих.
Я подозреваю, что jes5199 думал о методе __call, когда спросил, знает ли кто-нибудь что-то вроде метода __call ... Я думаю, что «в PHP4» была важной частью вопроса. – 2008-09-16 20:13:58