2016-10-11 76 views
0

标题有点混乱,我知道。基本上我想阻止一个文件中的变量,我将include()转换为另一个文件格式。 实施例:如何防止在文件包含时使用变量()ed

File1.php:

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

File2.php:

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

在上面的例子File2.php显然将回声 “酒吧”;但是,我想阻止这种情况发生,同时仍然可以访问File1.php内的任何函数。理想情况下,在函数外声明的变量在文件包含()时应该不可访问。

+1

'unset($ foo);'但是真的这个尖叫的糟糕的代码结构。 – nogad

+0

不幸的是,我没有别的选择,只能使用这种类型的代码结构。 – HittmanA

+0

@nogd这是正确的答案,请发布。 –

回答

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

这是否仍然允许调用名称空间中的函数(我是使用名称空间的新手)? – HittmanA

+0

@HittmanA更新了我的答案。你可以阅读更多关于我发布的链接。 –

+0

谢谢,这个绝对有用! – HittmanA

相关问题