有没有办法在PHP4中模拟PHP5的__call()魔术方法?

时间:2020-03-05 18:57:01  来源:igfitidea点击:

PHP5具有"魔术方法" __call(),可以在调用未定义方法时调用的任何类上定义-大致等效于Ruby的method_missing或者Perl的AUTOLOAD。是否可以在旧版本的PHP中执行类似的操作?

解决方案

回答

我记得曾经使用过它,并且使用了一些谷歌搜索功能后发现

function __call($method_name, $parameters, &$return)
{
  $return_value = "You called ${method_name}!";
}

作为成员函数将完成这项工作。

回答

本文"在DevShed上使用PHP 4中的方法调用重载"可能会有所帮助。

回答

我最想念的最重要的一点是PHP中存在__call,但是我们必须通过调用overload()在每个类的基础上启用它,如php docs所示。
不幸的是,PHP4和PHP5之间的__call()函数签名不同,并且似乎没有一种方法可以使两者同时运行。