我能想出的最接近的解决方案是:
call_user_func( function() {
//functions you don't want to expose
$sfunc = function() {
echo 'sfunc' . PHP_EOL;
};
//functions you want to expose
global $func;
$func = function() use ($sfunc) {
$sfunc();
echo 'func' . PHP_EOL;
};
} );
$func();
?>
但你必须调用$func()而不是func()这样的函数.问题是当你将$func重新分配给其他值时它会中断.
$func = 'some other value';
$func(); //fails
当然你可以创建包装函数:
function func() {
$func();
}
通过这种方式,您可以像func()一样调用它,但重新分配问题仍然存在:
$func = 'some other value';
func(); //fails