PHP清除require文件之间的变量?

时间:2012-09-11 16:09:30

标签: php

我的php代码中有一个文件需要。这个要求在代码中存在两次。

require 'test.php';

echo $result;

require 'test.php';

在完全相同的文件上运行第二个需求之前,有没有办法清除第一个需要设置的所有变量?

4 个答案:

答案 0 :(得分:1)

如果您在需求开头声明所有变量,请执行以下操作:

$var = false;
$var2 = 0;
$var3 = '';
// etc...

除了再次要求文件之外,您不必做任何其他事情 - 这些声明会自动将变量重置为初始状态。

话虽这么说,你要做的就是呼吁采用不同的方法。根据您需要使用它的方式将该功能封装到函数或类中。基本上,如果你有一些代码在整个代码库中重复,你应该对它进行模块化,并且绝对不会仅使用该内部功能所需的变量来污染全局范围。

答案 1 :(得分:1)

如果不使用全局变量,可以将require包装在函数中。在这种情况下,您创建的所有变量都将限制在函数范围内。

function includeFile() {
    require 'test.php';
    echo $result;
}

includeFile();

includeFile();

但是按照评论中的建议创建一个类会好得多。

答案 2 :(得分:0)

你可以做两件事。 unset()将删除所有这些变量。这回答了你的问题。

你应该做的是研究OOP和课程。创建一个类,然后创建该类的实例。然后,您可以创建一个新类,并拥有完全不同的值和数据,最终再次禁用unset()require

答案 3 :(得分:0)

我没有测试此代码!

Point是包含之前定义的变量列表,包含文件,包含后获取已定义变量的列表,计算差异,根据该差异取消设置全局变量,包含文件。

请参阅get_defined_varsunset上的手动条目。

<?php

$old_vars = get_defined_vars();

require 'test.php';

$new_vars = get_defined_vars();

echo $result;

$diff_vars = array_diff_key($old_vars, $new_vars);
while ($var = key($diff_vars)) {
    unset($GLOBALS[$var]);
    next($diff_vars);
}
unset($old_vars, $new_vars, $diff_vars);

require 'test.php';

有道理吗?