有没有办法在 PHP4 中模拟 PHP5 的 __call() 魔术方法?
PHP5 有一个“神奇方法”__call()
,可以在调用未定义方法时调用的任何类上定义——它大致相当于 Ruby 的 method_missing
或Perl 的AUTOLOAD
。 在旧版本的 PHP 中可以做这样的事情吗?
PHP5 has a "magic method" __call()
that can be defined on any class that is invoked when an undefined method is called -- it is roughly equivalent to Ruby's method_missing
or Perl's AUTOLOAD
. Is it possible to do something like this in older versions of PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我记得使用过它,谷歌搜索了一下表明
作为成员函数就可以完成这项工作。
I recall using it, and a little bit of googling suggests that
as a member function will do the job.
我遗漏的最重要的一点是 PHP4 中存在
__call
,但是您必须通过调用overload()
在每个类的基础上启用它,如 < a href="https://www.php.net/manual/en/function.overload.php" rel="nofollow noreferrer">php 文档在这里 。不幸的是,PHP4 和 PHP5 之间的 __call() 函数签名不同,并且似乎没有一种方法可以实现在两者中运行。
The most important bit that I was missing was that
__call
exists in PHP4, but you must enable it on a per-class basis by callingoverload()
, as seen in php docs here .Unfortunately, the __call() function signatures are different between PHP4 and PHP5, and there does not seem to be a way to make an implementation that will run in both.