在我的config.php中,我有这个数组:
$_LIT = array(
/* Адрес сайта */
"url" => "http://learnit.loc/", // Адрес сайта
....
);
问题是,我无法在下面的代码中使用此数组:
例如,我有一个邮件方法,我必须将$_LIT["url"]
放在我的特殊链接变量中。:
function testMethod($username, $email) {
$link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
}
而且......我无法使用它($_LIT["url"]
)。它只是放什么,网站网址应该是什么。
我还可以说,我在我的ohter .php文件中使用我的config.php使用" require_once
" " config.php
&#34 ;.所以我可以在那里得到$_LIT["something"]
,但不能直接在confing.php中找到。为什么呢?
感谢您的帮助。
答案 0 :(得分:0)
无法直接访问函数范围之外的变量。
您需要在函数内使用关键字global
。
喜欢global $_LIT
$link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
链接到文档。
http://php.net/manual/en/language.variables.scope.php
----更新----
function testMethod($username, $email) {
global $_LIT;
$link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
}
答案 1 :(得分:0)
要在函数或类范围内使用全局变量,您需要使用global
关键字:
function testMethod($username, $email) {
global $_LIT;
$link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
}
documentation中的更多内容。
答案 2 :(得分:0)
$ _LIT变量在函数范围之外声明。您可以在函数范围内通过将其声明为全局来访问它,如下所示:
function testMethod($username, $email)
{
global $_LIT;
$link = $_LIT['url'];
}
另一种方法是将$ _LIT变量添加为函数的依赖项;如果您需要提供本地化,例如,这允许您在将来轻松改变函数的行为。
function testMethod($username, $email, $config)
{
$link = $config['url'];
}
然后像这样调用函数:
testMethod('username', 'email', $_LIT);