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

发布于 2024-07-05 12:37:44 字数 159 浏览 7 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

请叫√我孤独 2024-07-12 12:37:46

我记得使用过它,谷歌搜索了一下表明

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

作为成员函数就可以完成这项工作。

I recall using it, and a little bit of googling suggests that

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

as a member function will do the job.

梦醒灬来后我 2024-07-12 12:37:45

我遗漏的最重要的一点是 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 calling overload(), 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文