【问题标题】:How do I use variables from another PHP include file in a function?如何在函数中使用来自另一个 PHP 包含文件的变量?
【发布时间】:2011-08-01 05:01:17
【问题描述】:

我有这个 PHP 包含文件,其中包含我将使用的所有变量。如何在函数的另一个文件中使用所有这些变量,而不在该函数中再次将它们声明为全局变量?

【问题讨论】:

    标签: php variables scope global


    【解决方案1】:

    一个函数不能访问外部变量而不包括它们或将它们声明为全局变量或从全局变量中获取它们。在过去,我创建了一个数组和易于阅读的变量。然后我引用数组变量并且必须按名称访问变量。

    【讨论】:

    • 我喜欢这个(或下面的对象建议),因为它避免了用大量变量污染全局命名空间。
    【解决方案2】:

    应该将它们作为参数传递给函数。如果有很多人要这样做,请考虑使用对象而不仅仅是函数,然后在主文件中实例化对象的实例。或者正如 Craig 所提到的,除了您的主要函数参数之外,还可以在选项数组中传递全局变量。

    【讨论】:

      【解决方案3】:

      您可以通过以下方式访问全局范围的所有变量:

      $GLOBALS['varname']
      

      为避免一直使用 $GLOBALS,您可以自动“全球化”变量:

      将它放在你的函数中以“导入”所有变量:

      foreach($GLOBALS as $key=>$val){
          if(!isSuperGlobal($key))
              global $$key;
      }
      

      并将此帮助功能放在您的功能之外的其他地方

      function isSuperGlobal($name){
          switch($name){
              case 'GLOBALS':
              case '_SERVER':
              case '_GET':
              case '_POST':
              case '_FILES':
              case '_COOKIE':
              case '_SESSION':
              case '_REQUEST':
              case '_ENV':        return true;    break;
              default:            return false;   break;
          }
      }
      

      【讨论】:

      • 所以如果变量名是“somevariable”并且在另一个包含文件中,我可以为调用它的函数执行此操作:$GLOBALS['somevariable'];
      • 棘手 :) 好主意,非常简单。
      • 对不起,我认为这是一个糟糕的主意。可能有几十个或几百个这样的变量,您可能只想使用一两个。我会推荐克雷格的方法。我广泛使用它。
      猜你喜欢
      • 2023-04-09
      • 2020-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      相关资源
      最近更新 更多