Должен ли я лучше использовать вспомогательную функцию session () или collect () в Laravel 5.7?

#php #arrays #laravel #session #collect

#php #массивы #laravel #сессия #собирать

Вопрос:

Я сохранил свои массивные данные в сеансе следующим образом.

 session(['my_key' => ['car' => 123, 'motor' => 45, 'boat' => 678]]);
  

Чтобы получить ключи, я мог бы сделать следующее:

 $car_key = session('my_key.car');
$motor_key = session('my_key.motor');
$boat_key = session('my_key.boat');
  

Или я могу сделать следующее:

 $my_keys = session('my_key');

$car_key = collect($my_keys)->get('car');
$motor_key = collect($my_keys)->get('motor');
$boat_key = collect($my_keys)->get('boat');
  

Я не знаю, как session() и collect()->get() обрабатывать array функции. В данном случае один подход лучше другого? Или это не имеет большого значения, даже сеанс хранит массив с большими данными?

Ответ №1:

collect() помощник используется для создания коллекции. Во втором способе вы создаете три разные коллекции, содержащие одни и те же данные коллекции. И затем вы получаете данные по ключу из каждой коллекции. Colde кажется устаревшим и используется не так, как следовало бы.

Используйте session() помощник

Комментарии:

1. И если я сделаю это так, $ key_collect_object = collect($my_keys); $car_key = $key_collect_object-> get(‘автомобиль’); $motor_key = $key_collect_object-> get(‘мотор’); $boat_key = $key_collect_object-> get(‘лодка’); Будет ли сессия (‘my_key.boat’) все еще быть лучше?

Ответ №2:

Это зависит.

Если вы хотите использовать методы, которые доступны только в коллекциях, то это был бы совершенно правильный способ сделать это. Более простым подходом было бы использовать:

 $myCollection = collect(session('my_key'));
  

Таким образом, вы можете просто использовать $myCollection->get('car') etc, а не создавать несколько коллекций.

Однако, если вы просто хотите получить значение и вас устраивает массив, вы можете просто использовать session() помощник и вернуть данные в обычном режиме.