【问题标题】:PHP: How to unset all variables from included file?PHP:如何从包含的文件中取消设置所有变量?
【发布时间】:2012-10-13 19:33:30
【问题描述】:

PHP:如何从包含的文件中取消设置所有变量?

【问题讨论】:

  • 您研究过命名空间吗?我认为这可能更有意义。
  • @circusdei 问题是库正在创建全局变量,我想命名你的变量应该避免这个问题
  • 如果 2 个库在全局命名空间中相互冲突,除了修改它们之外,您无能为力。但是 kgb 的答案是查看哪些变量导致问题的最佳方法。
  • curl -s http://punbb.informer.com/download/punbb-1.4.2.tar.gz | tar -xOz | grep -aF 'global $' | sed 's/\tglobal //;s/, /\n/g' | tr -d '$;\t' | sort -u OH MY GOD SONY GLOBALS

标签: php include unset


【解决方案1】:

你不应该使用全局变量有两个原因

  • 意大利面条代码
  • 名称冲突

我无法解决其中的意大利面条代码部分,但我可以建议您将所有全局变量移到其自己的类中以避免名称冲突

您可以将它们设置为单个全局对象的静态属性,而不是设置全局变量

class Globals {
  public static global1 = 0;
  public static global2 = 2;
}

并在您的代码中使用它们,例如

Globals::global1 = 5;

这避免了名称冲突,但我仍然避免它并尝试在不使用全局变量的情况下实现我的代码。

【讨论】:

    【解决方案2】:

    您可能想查看get_defined_vars(),但使用namespaces 更有意义。

    【讨论】:

      【解决方案3】:

      类似:

      foreach($GLOBALS as $key => $val) {
          unset($GLOBALS[$key]);
      }
      

      但我永远不会这样做。正如一些评论者所说,研究命名空间。

      【讨论】:

        【解决方案4】:

        使用 unset();

        例如。未设置($_POST);未设置($_GET);未设置($数据);

        【讨论】:

        • OP 不知道要在哪些变量上调用 unset,它们是由库放在那里的
        猜你喜欢
        • 2017-11-14
        • 2014-12-02
        • 2016-08-06
        • 2020-05-28
        • 2011-04-12
        • 1970-01-01
        • 2011-03-12
        • 2021-11-20
        • 2014-08-01
        相关资源
        最近更新 更多