如何防止在文件被 include() ed 时使用变量

How to prevent variables from being used when a file is include() ed

我知道标题有点混乱。基本上我想防止一个文件中的一个变量被我 include() 到另一个文件中被使用。 示例:

File1.php:

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

File2.php:

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

在上面的例子中File2.php显然会回显"Bar";但是,我想在仍然能够访问 File1.php 内的任何功能的同时防止这种情况发生。理想情况下,当文件被 included() ed.

时,在函数外部声明的变量不应该是可访问的

使用PHPnamespaces:

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