在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