如何覆盖Session :: get?

问题描述 投票:3回答:2

我们需要在Session::get上做自定义逻辑,例如,出于某种原因,如果它获得null值,则在将null返回给调用者之前执行其他操作。

我们看看扩展会话here,但我们需要覆盖的处理程序是vendor/laravel/framework/src/Illuminate/Session/Store.php,方法是get

那么,在get实现覆盖方法vendor/laravel/framework/src/Illuminate/Session/Store.php的推荐方法是什么?

laravel session laravel-5.3 laravel-session
2个回答
2
投票

您可以创建自己的SessionServiceProvider,扩展Illuminate\Support\ServiceProvider\SessionServiceProvider并覆盖registerSessionDriver()以返回商店类的自定义实例。

然后在config / app.php中评论Illuminate\Support\ServiceProvider\SessionServiceProvider并添加您的自定义SessionServiceProvider

一个工作的例子:https://gist.github.com/thiagorb/d4f4afaafa23a7a564b5675db952fbb2


1
投票

你可以create你自己的session()像助手:

function sessionCheck($value)
{
    if (is_null(session($value))) {
        // Do something
    }

    return session($value);
}

或覆盖现有的。

© www.soinside.com 2019 - 2024. All rights reserved.