如何在文件包含()时防止使用变量

时间:2016-10-11 03:07:02

标签: php scope php-include

我知道,标题有点令人困惑。基本上我想防止一个文件中的变量,我将include()转换为另一个正在使用的文件形式。 例如:

File1.php:

<?php
$foo = "Bar";
?>

File2.php:

<?php
include("File1.php");
echo $foo;
?>

在上面的例子中,File2.php显然会回应&#34; Bar&#34 ;;但是,我想要在仍然能够访问File1.php中的任何函数的同时防止这种情况发生。理想情况下,当包含()编辑文件时,不应访问在函数外声明的变量。

1 个答案:

答案 0 :(得分:2)

使用PHP namespaces

File1.php:

<?php
namespace baz {
    function foo() {
        return "Bar";
    }
}
namespace { // global code
    $x = "XXX";
}
?>

File2.php:

<?php
include("File1.php");
echo $x; // outputs XXX
echo foo(); // Undefined
?>

要访问foo,您必须使用use

File2.php:

<?php
include("File1.php");
use function baz\foo;
echo foo(); // outputs Bar
?>