0

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

我有一个“中央”vars.php,其中包含一些参数,如 MySQL 主机名、用户、pass、一个指示代码是否在测试环境中运行的 $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 中的变量,并且能够直接在函数内部使用它们而不必担心包含它们吗?

谢谢!

4

3 回答 3

4

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

于 2012-08-21T11:44:07.297 回答
2

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

include('vars.php');


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

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

于 2012-08-21T11:46:13.683 回答
1

使用常量。一起定义并始终在类/文件之上。

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

如果您要起诉 DEFINE,请记住使用 const 作为字符串而不是 var,例如:

定义(“BASE_PATH”,“C://base/”);

$dir = BASE_PATH 。“图像/dropbox.txt”;

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

于 2012-08-21T11:50:05.957 回答