我希望在Laravel 4中使用我自己的会话处理程序。我可以在哪里扩展Laravel 4会话,这样我就可以使用自己指定的类来读取/写入/删除数据。
答案 0 :(得分:0)
查看有关扩展Laravel的Laravel文档: http://laravel.com/docs/4.2/extending#session
您希望尽早创建一个新的ServiceProvider以启动新的Session处理程序,并将其置于应用程序配置中的原始SessionServiceProvider引用之下。 实施例
use Illuminate\Support\ServiceProvider;
class MySessionServiceProvider extends ServiceProvider {
/**
* Register my custom service provider.
*
* @return void
*/
public function register()
{
$this->registerMySessionHandler();
}
/**
* Register your session manager instance.
*
* @return void
*/
protected function registerMySessionHandler()
{
$this->app->bindShared('mysession', function($app)
{
return new MySessionHandler($app);
});
}
如果您需要更多信息,请查看Illuminate / Session / SessionServiceProvider.php和ServiceProvider文档(http://laravel.com/docs/master/providers)。
编写Session类:
class MySessionHandler implements SessionHandlerInterface {
public function open($savePath, $sessionName) {}
public function close() {}
public function read($sessionId) {}
public function write($sessionId, $data) {}
public function destroy($sessionId) {}
public function gc($lifetime) {}
}
然后你可以使用Session :: extend()方法扩展Session类(我相信这会在你的起始文件中,但不要引用我的话):
Session::extend('mysession', function($app)
{
return new MySessionHandler;
});
注册会话驱动程序后,您应该在app / config / session.php配置文件中使用mysession
驱动程序。
答案 1 :(得分:-1)
首先,在application / libraries文件夹中创建并放置sessionpayload.php并像这样扩展:
class Sessionpayload extends \Laravel\Session\Payload {
//stuff
}
然后,在application / libraries文件夹中创建并放置session.php并像这样扩展:
class Session extends \Laravel\Session {
public static function start($driver)
{
static::$instance = new Sessionpayload(static::factory($driver));
}
}
然后,您应该在下面注释掉,或者如果您为您的类使用命名空间,则可以更改:
'Session' => 'Laravel\\Session',
在application / config / application.php。
中