我在我的脚本第一行,我有:全局变量是在类方法NULL
$db = new db_class();
这仅仅是一个开始db对象实例。然后我有:
class main {
function init() {
$this->session_start();
}
protected function session_start() {
$sh = new session_handler();
session_set_save_handler(
array (& $sh, 'open'),
array (& $sh, 'close'),
array (& $sh, 'read'),
array (& $sh, 'write'),
array (& $sh, 'destroy'),
array (& $sh, 'gc')
);
}
}
所有的问题都在session_handler
类中。此代码:
public function write($id, $data) {
global $db;
var_dump($db); //returns NULL
}
说$db
是NULL
代替的db_class
一个实例。
注意,db_class
对象调用write()
方法时,除了工作:
class main {
function init() {
global $db;
var_dump($db); //returns the db object correctly
$this->session_start();
}
protected function session_start() {
$sh = new session_handler();
session_set_save_handler(
array (& $sh, 'open'),
array (& $sh, 'close'),
array (& $sh, 'read'),
array (& $sh, 'write'),
array (& $sh, 'destroy'),
array (& $sh, 'gc')
);
}
}
东西类名的值是什么它说当你var_dump在这行代码的下面'$ db = new $ db_class(); '? – 2012-02-04 09:43:23
为什么使用全局变量,如果将db实例传入类中,会更好。 – 2012-02-04 09:44:43
$ db = new $ db_class()应该是$ db = new db_class()不是吗? – 2012-02-04 09:44:44