0

我调用了一个在我的 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"

请告诉我我做错了什么?

4

3 回答 3

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

于 2012-09-25T14:02:37.260 回答
0

这是变量范围的问题。您的函数看不到该变量,因为该变量超出了其范围。你应该这样做:

function get_site_url(){
    $GLOBAL_URL_OF_THE_SITE= "http://webfaction";

    return $GLOBAL_URL_OF_THE_SITE; 
}
于 2012-09-25T14:02:34.377 回答
0

您可以使用 array 来编写代码而不在函数体中声明全局$GLOBALS。该数组将所有全局变量作为键。

于 2012-09-25T14:07:09.617 回答