我调用的函数在我的smsconfig.php文件中定义,如
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
function get_site_url(){
return $GLOBAL_URL_OF_THE_SITE;
}
在我的index.php文件中,我包含了smsconfig.php文件,然后我正在执行以下操作:
<?php
include("smsconfig.php");
?>
<html>
<head >
<link rel="stylesheet" type="text/css" href="default.css" />
<script src="<?php echo get_site_url();?>/UI/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
不幸的是我的JS没有加载,我在firebug中收到以下错误:
"NetworkError: 404 Not Found - http://webfaction/UI/%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20variable:%20GLOBAL_URL_OF_THE_SITE%20in%20%3Cb%3E/opt/lampp/htdocs/UI/smsconfig.php%3C/b%3E%20on%20line%20%3Cb%3E11%3C/b%3E%3Cbr%20/%3E/UI/jquery/jquery-1.7.2.min.js"
请告诉我我做错了什么?
答案 0 :(得分:4)
默认情况下,函数无权访问全局变量。在访问变量之前,您必须使用global
声明变量:
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
function get_site_url(){
global $GLOBAL_URL_OF_THE_SITE;
return $GLOBAL_URL_OF_THE_SITE;
}
如果没有global
,应该看到警告,您可能会压制它:
PHP注意:未定义的变量:GLOBAL_URL_OF_THE_SITE
答案 1 :(得分:0)
这是可变范围的问题。您的函数无法查看变量,因为该变量超出了其范围。你应该这样做:
function get_site_url(){
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
return $GLOBAL_URL_OF_THE_SITE;
}
答案 2 :(得分:0)
您可以使用数组$GLOBALS
进行编码,而无需在函数体中声明全局。此数组将所有全局变量作为键。