PHP中全局变量的一个问题

class testGlobal {
    public function __construct() {
        include_once(dirname(__FILE__) . "/config.inc.php");        
    }

    public function getMetaDataById() {
        global $db;

        echo "db: $db\n";
    }
}
$obj = new testGlobal();
$obj->getMetaDataById();

上面的代码没有任何输出,奇怪,问题出在哪儿呢?后来想想,原来是全局变量的问题在捣鬼。

在__construct里面加入一行global $db就解决问题啦。

也就是说,虽然在__construct里面包含了配置文件,但是配置文件里面的变量只对__construct有效,要想让配置文件里面的变量在其它的函数里面也有效,需要声明此变量为全局变量,同时在调用此变量的方法(getMetaDataById)里面也要声明此变量为全局变量。
同时有个问题要注意,global $db必须定义在include_once之前,否则在方法getMetaDataById里面是取不到变量$db的值的。
class testGlobal {
    public function __construct() {
        global $db;

        include_once(dirname(__FILE__) . "/config.inc.php");        
    }

    public function getMetaDataById() {
        global $db;

        echo "db: $db\n";
    }
}
$obj = new testGlobal();
$obj->getMetaDataById();

输出:
db: Test db obj


上一篇: PHP正则验证中文
下一篇: PHP技巧总结
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1909
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑