如何在功能中包含一个php文件?

时间:2015-12-02 20:39:27

标签: php

我想在其他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()函数内部工作)。 我现在该怎么做?

1 个答案:

答案 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');

我会认真考虑重新设计您的解决方案以使用上述类。否则,在删除应该是私有的函数时必须格外小心,尤其是在存在安全性或暴露敏感数据的情况下。