PHP:将函数的范围限制为仅在当前文件中


PHP: limit the scope of functions to within current file only

是否有任何方法可以限制php文件中非类函数的范围,并使它们成为其所在php文件中唯一可访问的函数?比如C如何使用static关键字和函数来实现这一点。在php中,static似乎只适用于类。我想隐藏只能由文件中的函数访问的辅助函数。谢谢

我能找到的最接近的解决方案是:

<?php
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