PHP在函数内部使用一个中心变量文件


PHP use one central variables file inside functions

在PHP中,以下情况的正确方法是什么:

我有一个"central"vars.php,它包含一些参数,如MySQL主机名、用户、通行证,一个$Test变量,指示代码是否在测试环境中运行,以及我在整个网站上使用的其他一些变量。

然后我有一个functions.php,它包含了我可以在整个网站上使用的所有功能。

在其中一些函数中,我可能需要vars.php文件中的一些变量。

让vars.php在php中"无处不在"可用的正确方法是什么?现在我这样做:

vars.php:
   <?php
   if(strstr($_SERVER['HTTP_HOST'],"localhost"))
   {
       $Test = true;
   }
   ?>
functions.php:
   <?php
   function DoSomething()
   {
      include "vars.php";
      if($Test)
      {
         $String = "Test is true!";
      }
         else
         {
            $String = "Test is false!";
         }
      return $String;
   }
   ?>
index.php:
   <?php
   include "vars.php";
   include "functions.php;
   $DoSomething = DoSomething();
   echo $DoSomething;
   ?>

虽然这确实有效,但我必须在我定义的每个函数中包含vars.php,这对我来说似乎不是一个"好"的解决方案。难道没有一种方法可以直接在全局范围内定义vars.php中的变量,并能够在函数中直接使用它们,而不必担心将它们包括在内吗?

谢谢!

正确的方法是使用常量而不是变量。

您正在寻找全局变量。如果你在页面顶部包含文件,然后在你的函数中声明每个文件为全局文件,如下所示:

include('vars.php');

function whatHost()
{
  global $host;
  echo $host;
}

它会起作用的。然而,这是一种非常糟糕的做法,因为全球95%的情况都非常糟糕。PHP具有强大的面向对象特性,允许您将功能和状态封装在对象中。我建议您仔细阅读并了解存储应用程序配置的更正确的方法。请注意,对于这种特殊情况,您可以只使用常量(:

使用常量。一起定义,并且始终位于类/文件之上。

常量是唯一的,我们将它们用作配置信息或静态/常量数据。

如果你是sue DEFINE,请记住使用const作为字符串而不是var,例如:

define("BASE_PATH","C:''//BASE/");

$dir=BASE_PATH。"images/dropbox.txt";

http://php.net/manual/en/language.constants.php