7

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

4

1 回答 1

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();
}

这样就可以调用 likefunc()了,但是重新赋值的问题依然存在:

$func = 'some other value';
func();  //fails
于 2013-08-07T04:03:38.050 回答