【发布时间】:2014-11-25 12:37:03
【问题描述】:
我正在尝试使用 Laravel 5.0 创建应用程序,但在 BaseController 构造函数
中使用 Session 方法时遇到问题这是我的 BaseController 和它的构造函数。
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 来自不兼容的上下文
有谁知道我做错了什么?
【问题讨论】:
-
听起来很奇怪...顺便说一句,如果我是你,我会尝试通过调用
Session()作为新对象来解决这个问题。$session = new Session(),然后是$session->has('lang')。这不是“Laravel 风格”,但应该可以。 -
如你所见,这是 Symfony2 的 Session 对象,它没有这么糟糕的静态接口。如果你想拥有它,请使用 Laravel 的“外观”类:laravel.com/docs/4.2/session
标签: php session laravel laravel-5