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

时间:2013-08-06 23:48:14

标签: php function scope

有没有办法限制php文件中的非类函数的范围,并使它们只能在它所在的php文件中访问?就像C可以使用带有函数的静态关键字来实现这一点。在php中,静态似乎只适用于类。我想隐藏只能由文件中的函数访问的辅助函数。感谢。

1 个答案:

答案 0 :(得分:2)

我能弄清楚的最接近的解决方案是:

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