php 中的魔术函数 __call() 用于类中。是否有任何类似的魔术功能,而不是功能?就像 __autoload() 用于函数一样。
例如像这样
function __call($name, $arguments) {
echo "Function $name says {$arguments[0]} ";
}
random_func("hello");
php 中的魔术函数 __call() 用于类中。是否有任何类似的魔术功能,而不是功能?就像 __autoload() 用于函数一样。
例如像这样
function __call($name, $arguments) {
echo "Function $name says {$arguments[0]} ";
}
random_func("hello");
不,我认为不存在这样的神奇功能。
一种解决方法是将您的函数放入一个静态类中,并为该类添加一个__callStatic
魔术方法(恐怕仅限于 PHP 5.3):
class Func
{
/** As of PHP 5.3.0 */
public static function __callStatic($name, $arguments)
{
// Note: value of $name is case sensitive.
echo "Calling static method '$name' "
. implode(', ', $arguments). "\n";
}
}
Func::random_func("hello!");
对于 PHP < 5.3,您可以做同样的事情,但您必须实例化一个对象并使用__call
魔法方法。
$Func = new Func;
$Func->random_func("hello!");
不会。调用不存在的函数总是会导致 FATAL 错误。
** 也许一个 zend 扩展可以用 拦截这个fcall_begin_handler
,但我不确定。