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