我想在其他php文件的函数中包含一个php文件,但我不想全局访问它们的函数和类。 我的意思是:
afile.php:
<?php
function privateFunction()
{
echo 'i dont want to access this function from other files';
}
?>
bfile.php:
<?php
function goInclude()
{
include 'afile.php';
}
privateFunction(); //i dont want to this work
?>
我不想在bfile上运行privateFunction()只想在goInclude()函数内部工作)。 我现在该怎么做?
答案 0 :(得分:1)
如您所述,函数式编程是不可能的。
我建议您使用私有方法(函数)创建一个类,然后该类的其他方法可以调用私有方法,但其他代码不能。
以下是方法可见性的一个很好的说明:http://php.net/manual/en/language.oop5.visibility.php#language.oop5.visiblity-methods
编辑:
我正在使用静态方法添加一个(未经测试的)示例,以便根据您问题中提供的信息最好地说明我的答案:
<?php
class myClass {
private static function privateFunction() {
echo 'i dont want to access this function from other files';
}
static function publicFunction() {
// do something
self::privateFunction();
}
}
myClass::publicFunction(); // works
myClass::privateFunction(); // won't work
编辑2:
还有另一种可能性,你可以删除功能,但我从未尝试过。 http://php.net/manual/en/function.runkit-function-remove.php
在这种情况下,您可以在使用privateFunction()后执行类似的操作:
privateFunction();
runkit_function_remove('privateFunction');
我会认真考虑重新设计您的解决方案以使用上述类。否则,在删除应该是私有的函数时必须格外小心,尤其是在存在安全性或暴露敏感数据的情况下。