我的剧本中的第一行是:
$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')
);
}
}
答案 0 :(得分:1)
我猜问题出在第一行 $ db = new $ db_class();
如果猜它应该像
$db = new db_class();
或者确保$ db_class具有您要初始化的类名值
尝试这样的事情怎么样
class main{
protected $_db;
function init($db){
$this->_db = $db;
$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')
);
}
public function write($id, $data) {
vardump($this->_db);
}
}