到目前爲止我發現的唯一解決方案是讓班級成員r與控制器(而不是作爲庫分開)。
不是很優雅,但由於某種原因,它工作,而CI庫實例不會。
所以基本上:
class Main extends CI_Controller {
public function index() {
$game = new Game();
echo $game->id;
$this->session->set_userdata('game',$game);
}
public function restore_game() {
$game = $this->session->userdata('game');
echo $game->id;
}
}
class Game {
public $id;
public function __construct() {
$this->id = rand(0,100);
}
}
或者你仍然可以保持類中的「庫」文件夾,但採用了經典的require_once而不是$這個 - >負載>庫(「遊戲」),加載其是會話無法處理的那種對象。
require_once(APPPATH . 'libraries/Game.php');
class Main extends CI_Controller {
...
}
感謝您的意見。但是,將對象存儲在會話中應該減少對數據庫的查詢次數(例如,保存用戶的完整ACL)。我現在通過將對象數據轉換爲一組*有意義的數組並將其寫入session-> userdata來解決它。 – DerShodan 2012-02-19 11:33:08