PHP中全局变量的一个问题
作者:admin 日期:2012-04-06
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
评论: 0 | 引用: 0 | 查看次数: 1909
发表评论
广告位