我看到很多框架和CMS使用自己的会话实现而不是本机PHP会话驱动程序。一切都是出于他们自己的原因。
这些例子包括Wordpress,Laravel,CakePHP(有点)。
我想知道的是,如果他们手动设置cookie并自己进行会话处理,他们如何处理第三方包?
第三方作曲家包可能会与默认$_SESSION
进行交互,并且可能尝试设置会话变量,而$_SESSION
完全不使用。
仍然使用Laravel这样的框架,我记得它仍然可以与第三方软件包进行完美的交互,并将它们全部放入自己的会话实现中。
很想知道可能对此有一些经验的人。
修改
第三方包的一个例子可能是一个php调试栏,它可以从$ _SESSION读取并在需要时插入它自己的变量。我知道像Laravel这样的框架有自己的调试条实现,不与本地$_SESSION
交互。
我想我想知道完全运行你自己的$_SESSION
实现是否可行,而不会有太多麻烦。
答案 0 :(得分:1)
这可能不是一个完美的答案,但这至少是我在处理自定义会话实现时所发现的。最新的Laravel安装。
在Laravel 5.6 $_SESSION
全局不存在没有会话存在但是当使用Session::all()
时它返回会话的标记。这是合乎逻辑的。
Route::get('/', function () {
dump(Session::all());
dd($_SESSION);
return view('welcome');
});
返回
array:3 [▼
"_token" => "G22ETumV1CQoolo2sAV0SA4wWmxFrZjTXTli7ico"
"_previous" => array:1 [▼
"url" => "http://127.0.0.1:8000"
]
"_flash" => array:2 [▼
"old" => []
"new" => []
]
]
dd
ErrorException in web.php line 16:
Undefined variable: _SESSION
根据我自己的测试,我的结论是,如果与Sessions交互的作曲家包没有实现Laravel ServiceProvider,它就无法对会话做任何事情。
希望这是有帮助的回应。