到目前为止我发现的唯一解决方案是让班级成员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