Как переопределить Session::get?

Нам нужно сделать собственную логику в Session::get как например, по какой-то причине, если он получает нулевое значение, сделайте что-нибудь еще, прежде чем возвращать нулевое значение вызывающей стороне.

Мы рассмотрели расширение сеанса здесь, но обработчик, который нам нужно переопределить, находится в vendor/laravel/framework/src/Illuminate/Session/Store.php с методом get

Итак, каков рекомендуемый способ достижения переопределения метода get в vendor/laravel/framework/src/Illuminate/Session/Store.php?

2 ответа

Вы можете создать свой собственный SessionServiceProvider, расширяя Illuminate\Support\ServiceProvider\SessionServiceProvider и переопределить registerSessionDriver() для того, чтобы вернуть пользовательский экземпляр класса магазина.

Затем прокомментируйте Illuminate\Support\ServiceProvider\SessionServiceProvider в config / app.php и добавьте свой кастом SessionServiceProvider,

Рабочий пример: https://gist.github.com/thiagorb/d4f4afaafa23a7a564b5675db952fbb2

Вы можете создать свой собственный session() как помощник:

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

    return session($value);
}

Или переопределить существующий.

Другие вопросы по тегам