Метод exists
Метод exists класса Session проверяет наличие ключа в сессии. В отличие от метода has, который возвращает false если значение ключа равно null, метод exists вернёт true даже если значение существует, но равно null. Первым параметром передаётся имя ключа или массив ключей для проверки. Возвращает логическое значение true если ключ существует, и false в противном случае.
Синтаксис
<?php
Session::exists($key);
?>
Пример
Давайте проверим наличие ключа 'user_id' в сессии:
<?php
use Illuminate\Support\Facades\Session;
Session::put('user_id', 123);
$res = Session::exists('user_id');
echo $res;
?>
Результат выполнения кода:
"true"
Пример
Давайте проверим наличие ключа, который не был добавлен в сессию:
<?php
use Illuminate\Support\Facades\Session;
$res = Session::exists('non_existent_key');
echo $res;
?>
Результат выполнения кода:
"false"
Пример
Проверим разницу между методами exists и has для ключа со значением null:
<?php
use Illuminate\Support\Facades\Session;
Session::put('empty_key', null);
$existsRes = Session::exists('empty_key');
$hasRes = Session::has('empty_key');
echo "exists: " . $existsRes;
echo "has: " . $hasRes;
?>
Результат выполнения кода:
"exists: true"
"has: false"
Пример
Давайте проверим наличие нескольких ключей одновременно. Метод вернёт true, если все ключи существуют:
<?php
use Illuminate\Support\Facades\Session;
Session::put('key1', 'abcde');
Session::put('key2', '12345');
$res = Session::exists(['key1', 'key2']);
echo $res;
?>
Результат выполнения кода:
"true"
Пример
Если хотя бы один из проверяемых ключей отсутствует, метод вернёт false:
<?php
use Illuminate\Support\Facades\Session;
Session::put('key1', 'abcde');
$res = Session::exists(['key1', 'missing_key']);
echo $res;
?>
Результат выполнения кода:
"false"
Пример
Используем метод exists в реальном примере контроллера для проверки авторизации пользователя:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Session;
class ProfileController extends Controller
{
public function show()
{
if (Session::exists('user_id')) {
$userId = Session::get('user_id');
return "User ID: " . $userId;
}
return "User not logged in";
}
}
?>