我可以在Laravel 5会话中保存对象、对象集合吗


Can I save Objects, Object Collections in a Laravel 5 Session?

是否可以在laravel 5会话中保存php对象、对象集合?

我试过了,但我在这个上出错了

Serialization of 'Closure' is not allowed vendor/illuminate/session/Store.php line 255
Session::put('my_php_object', $obj );
Session::save();

public function onRun()
{
    $this->addCss('assets/css/custom.css');
    $this->socialite_providers = $this->page['socialite_providers'] =$this->providersList();
    //check for provider param in url
    if($provider = $this->param('provider')){
        $this->setSessionProvider($provider);
        $this->provider = $provider;
        $this->callback_url = preg_replace('~.*'K:(.*)~s','',Request::root().$this->page->url);
        $this->request = $this->createRequest($provider);

        Session::save();
        return $this->request->redirect();
    }
    //Authorize user if Request has code
    if(Request::has('code')){
        if(!$this->getSession())
            return;
        //reuse save session
    }
}
public function createRequest($provider)
{
    $instance = Socialite::driver($provider);
    $init = $this->injectCredentials($instance, $provider);
    $this->setSession($init);
    return $init;
}
public function injectCredentials($instance, $provider){
    $credential = $this->providerData($provider)->toArray();
    $instance = new $instance
    (
        Request::instance(),
        $credential['client_id'],
        $credential['client_secret'],
        $this->callback_url
    );
    return $instance;
}
public function setSession($init)
{
    if(Session::has('socialite_object'))
        Session::forget('socialite_object');

    Session::put('socialite_object', $init );
}

您可以始终存储尝试存储的对象的JSON表示。

然而,我听说通常不在会话中存储大的东西是个好主意,你是否可以通过存储其他东西来管理它?如果要存储DB中的对象,则可以存储Id并通过查询恢复该对象。