2013-08-06 27 views
4

有没有什么办法来限制php文件中的非类函数的范围,并使它们成为它所在的php文件中唯一可访问的?就像C使用static关键字和函数一样可以实现这一点。在PHP静态似乎只适用于类。我想隐藏只能由文件中的函数访问的帮助函数。谢谢。PHP:将函数的范围限制在当前文件中

+0

只写在该文件中的功能? –

+0

这是不可能的 – BigToach

回答

1

我可以找出最接近的解决方案是这样的:

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

感谢您的答案,这是一个有趣的实施方式。但是,就像你说的那样,它会打破并且可以复杂化。我希望在php中构建一些东西,但我想这是不可能的,开发人员也没有发现它很重要。 – roverred

+0

是的,我更喜欢OOP的方式来隐藏PHP中的东西。 –