我的functions.php文件只是许多不同功能的占位符。我有另一个文件settings.php,我用它来存储不同的设置。 functions.php中的一些函数需要访问settings.php中的一些变量,所以我试过了:
require("settings.php")
在functions.php文件的顶部,但似乎没有让我的函数访问settings.php中的变量。我需要将require(“settings.php”)分别放在每个函数中。
有没有办法可以将settings.php中的变量声明为可以全局访问functions.php中定义的所有函数?
谢谢,
答案 0 :(得分:3)
您需要修改functions.php
中的函数,以使用settings.php
中定义的全局变量。
内部settings.php
;
$var1 = "something";
$var2 = "something else";
使用global
关键字:
function funcName() {
global $var1;
global $var2;
// Rest of the function...
}
或者更优选地,使用$GLOBALS[]
超全局数组。在全局范围内声明的任何变量,比如我假设您的settings.php变量,都将作为数组键包含在$GLOBALS[]
中。与在每个函数中使用global
关键字相比,它的可读性要好一些。
function funcName() {
$y = $GLOBALS['var1'];
$x = $GLOBALS['var2'];
// Etc...
}
答案 1 :(得分:3)
虽然您已在settings.php
文件中设置了这些变量,但当您尝试在函数中引用它们时,它将无效。这是因为函数中的变量本地作用于函数。
要访问这些全局变量,您需要使用global
关键字将全局变量纳入范围。
例如:
// Declared in settings.php
$x = 1234;
// One of your functions
function MyFunc()
{
global $x;
DoSomething($x);
}
您需要为访问$x
的每个功能执行此操作。
有关详细信息,请参阅:
答案 2 :(得分:2)
我不知道您的问题的详细信息,但您可能希望在每个功能中使用require_once()
。这似乎比使用一些全局变量更好。
答案 3 :(得分:1)
你在想全局变量。
然而,这不是最佳方式。
你可以创建一个类吗?
class SomeClass
{
private $settings;
function __construct()
{
require_once($settings);
$this->settings = $variable(s) from settings file
}
function some_function()
{
print($this->settings['something']);
}
}