Laravel 5.0 会话不能使用静态方法


Laravel 5.0 Session can't use static methods

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

这是我的底座控制器及其构造器。

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 中的 ContextErrorException .php第 22 行: 运行时注意:非静态方法 Symfony''Component''HttpFoundation''Session''Session::has() 不应静态调用,假设$this来自不兼容的上下文

有谁知道我做错了什么?

而不是:

use Symfony'Component'HttpFoundation'Session'Session;

您应该使用:

use Session;

以在此处导入会话。

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

而不是:使用 Symfony''Component''HttpFoundation''Session''Session;

您也可以使用:使用照明''支撑''立面''会话;