代码之家  ›  专栏  ›  技术社区  ›  Ali

php global关键字和$globals在5.3版中似乎不起作用。

  •  0
  • Ali  · 技术社区  · 16 年前

    在从5.2升级到php 5.3之后,我似乎遇到了这个问题。
    该站点运行index.php,其中包括()各种其他实用程序函数,然后根据get变量值包含正确的页面。

    现在有一件事我不能理解,那就是在xdebug中,我看不到 全球美元 . 另一点是-

    index.php:

    include_once('includes/global.inc.php');  
    include_once("classes/db.inc.php");  
    $db = new db();  
    

    GP公司:

    $glob['dbusername'] = 'myusername';  
    $glob['dbpassword'] = 'mypassword';
    //etc  
    

    php声明了一个名为db:

    class db  
    {  
     function db()  
     {  
      global $glob;  
      $this->db = @mysql_connect($glob['dbhost'], $glob['dbusername'], $glob['dbpassword']);  
     }  
    } // end of db class  
    

    问题是,如果我在db()中放置了一个断点,我就看不到$glob,调试器说它未初始化。

    2 回复  |  直到 10 年前
        1
  •  2
  •   Ali    10 年前

    好吧,这就是为什么在Eclipse的xdebug中$glob看起来是空的。当与php 5.3一起使用时,这是一个xdebug 2.0.5的错误。见 http://bugs.xdebug.org/view.php?id=376

    所以,归根结底就是PHP无法连接到MySQL…(我不知道为什么,我启用了php_mysql.dll和apache错误日志是干净的,phpinfo()显示了mysql的所有权利)

    我现在在php.in i中搜索…

        2
  •  1
  •   Pekka    16 年前

    在include中使用globals时,我也遇到过类似的问题。我从来没有真正意识到它的真正意义——有时它似乎包含了自己的范围。(当然,如果您从函数中包含文件,那么它将无法工作,因为include将继承函数的作用域。)

    我敢打赌,如果你使用其中一个:

    global $glob;
    $glob['dbusername'] = 'myusername';  
    $glob['dbpassword'] = 'mypassword';
    

    $GLOBALS["glob"]['dbusername'] = 'myusername';  
    $GLOBALS["glob"]['dbpassword'] = 'mypassword';
    

    你看不见的事实 $GLOBALS 在调试器中,可能是因为它不是一个真正的变量,而是一个构造。