批量包含文件,同时保持名称空间清洁

时间:2010-08-16 11:06:28

标签: php

我一直在使用以下代码段来包含多个文件:

foreach(glob(APP_PATH."libs/*.php") as $path)
{
 include $path;
}

问题是,我不希望在包含的文件中提供$ path变量。


虚拟解决方案:

include unset($path);

如果未设置返回未设置变量的值,这将有效。但事实并非如此。它返回void。

3 个答案:

答案 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()中的变量会发生什么......

将它放入函数/方法中,然后它只在函数(命名空间)中可用。