php中的魔术函数__call()用于类中。有没有类似的魔术功能,但功能呢?就像__autoload()用于函数。
例如像
这样的东西function __call($name, $arguments) {
echo "Function $name says {$arguments[0]} ";
}
random_func("hello");
答案 0 :(得分:3)
不,我认为这种魔法功能不存在。
一个解决方法是将您的函数放入静态类,并为该类添加__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!");
答案 1 :(得分:3)
没有。调用不存在的函数始终会导致致命错误。
**也许zend扩展可以用fcall_begin_handler
来拦截它,但我不确定。