【问题标题】:Global "method_missing" in PHP? [duplicate]PHP中的全局“method_missing”? [复制]
【发布时间】:2010-09-08 17:28:51
【问题描述】:

可能重复:
Magic functions __call() for functions?

我可以实现 __call() 以在 PHP 类中提供 method_missing 行为。有没有办法在全局范围内提供相同的功能?

我想要这样的东西:

function __call( $name, $arguments ) {
  echo( sprintf( '%s called', $name ) );
}

echo( 'before' );
call_undefined_function( $a, $b );
echo( 'after' );

输出:

before
call_undefined_function called
after

【问题讨论】:

  • 别担心 - 我找到它只是因为我回答了它......

标签: php oop method-missing


【解决方案1】:

您可以编写自己的error handler 并在其中使用function_exists() 来生成您想要的消息。只要您不在错误处理程序中停止脚本,就会继续执行。

【讨论】:

  • 我认为这不会处理未定义的函数错误。我试过php -r "set_error_handler('var_dump'); d();"这会失败(错误处理程序不会被调用,致命错误消息),而php -r "set_error_handler('var_dump'); echo $undefVar;"按预期工作。
  • @aularon,我没有尝试过,但似乎有几种错误无法由用户定义的函数处理,所以我想它毕竟不起作用...
猜你喜欢
  • 1970-01-01
  • 2012-12-24
  • 2016-03-11
  • 2013-11-15
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
相关资源
最近更新 更多