クラスメソッドでは、私が持っている私のスクリプトで私の最初の行NULLです。次に、私は持っています:グローバル変数は
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')
);
}
}
ような何かをしようとしてについて
を初期化したいクラス名の値を持っていることを確認する必要がありますね場合はどうこれは '$ db = new $ db_class();という行のコードの直下でvar_dumpするときに表示されます。 '? –
グローバルを使用する理由は、dbインスタンスをクラスに渡すとはるかに良いでしょう。 –
$ db = new $ db_class()は$ db = new db_class()にしてください。 –