我一直在使用以下代码段来包含多个文件:
foreach(glob(APP_PATH."libs/*.php") as $path)
{
include $path;
}
问题是,我不希望在包含的文件中提供$ path变量。
虚拟解决方案:
include unset($path);
如果未设置返回未设置变量的值,这将有效。但事实并非如此。它返回void。
答案 0 :(得分:4)
您可以编写自己的unset
来返回值...
function unsetr(&$value) { $result = $value; unset($value); return $result; }
答案 1 :(得分:2)
作为使用foreach,在每个循环之后重置并重用变量。
例如:
foreach(glob(APP_PATH."libs/*.php") as $path)
{
include $path;
//$path is now set to the next variable.
}
所以你只需要在foreach循环结束时取消$path
一次。
例如:
foreach(glob(APP_PATH."libs/*.php") as $path)
{
include $path;
}
unset($path);
现在就完成了工作,$ path完全免费且内存清晰。
你试过以下吗?
function HideString(&$_)
{
$t = $_;
unset($_);
return $t;
}
foreach(glob(APP_PATH."libs/*.php") as $path)
{
include HideString(&$path);
}
答案 2 :(得分:-1)
要防止包含的文件中的$ path可用,请尝试使用eval("include $path;")
。我不确定eval()中的变量会发生什么......
将它放入函数/方法中,然后它只在函数(命名空间)中可用。