Laravel 5.0 Session不能使用静态方法

时间:2014-11-25 12:37:04

标签: php session laravel laravel-5

我尝试使用Laravel 5.0创建应用,但我在 BaseController构造函数中使用Session方法时遇到问题

这是我的BaseController和它的consturctor。

use Symfony\Component\HttpFoundation\Session\Session;

class BaseController extends Controller {

    /**
     * Initializer.
     *
     * @access   public
     * @return \BaseController
     */
    public function __construct()
    {

        //set default lang
        if (!Session::has('lang')) {
            Session::put('lang', App::getLocale());
            Cookie::forever('lang', App::getLocale());
        } else {
            App::setLocale(Session::get('lang'));
        }


    }
}

但我收到此错误

  

BaseController.php第22行中的ContextErrorException:   运行时注意:非静态方法Symfony \ Component \ HttpFoundation \ Session \ Session :: has()不应该静态调用,假设$ this来自不兼容的上下文

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:8)

而不是:

use Symfony\Component\HttpFoundation\Session\Session;

你应该使用:

use Session;

在此处导入会话。

答案 1 :(得分:2)

您导入了错误的课程。 Symfony\Component\HttpFoundation\Session\Session是Laravel在调用Session::外观时使用的类 - 但它们不是同一个类,并且Symfony的会话类不使用has()的静态方法。我自己没有使用过Laravel 5,但我认为它位于顶级命名空间中。