У Laravel 11.2.0 з'явилася fluent()
допомога, яка спрощує конвертацію масивів у Fluent інстанції. Тепер, починаючи з Laravel 11.35, у нас є зручний метод для перетворення відповіді HTTP-клієнта на fluent інстанцію:
use Illuminate\Support\Facades\Http;
$response = Http::get('https://jsonplaceholder.typicode.com/posts')->fluent();
$response->get('0.title'); // sunt aut facere...
$response->collect()->pluck('title'); // ["sunt aut facere...", "qui est esse", ...]
Ще одна корисна можливість — перетворення JSON-даних у конкретні типи. Наприклад, можна конвертувати рядкову дату в Carbon
інстанцію:
use Illuminate\Support\Facades\Http;
$response = Http::get('https://api.chucknorris.io/jokes/random')->fluent();
$response->date('created_at');
$response->date('updated_at');
/*
Illuminate\Support\Carbon @1578231741 {#261 ▼ // routes/web.php:9
date: 2020-01-05 13:42:21.455187 UTC (+00:00)
}
*/
Fluent також підтримує інші корисні типи, як-от boolean
, enum
, масиви enum
та інші. Один із моїх улюблених способів — використовувати знайомі методи, як-от only
і except
, для отримання конкретних даних:
use Illuminate\Support\Facades\Http;
$response = Http::get('https://api.chucknorris.io/jokes/random')->fluent();
$response->except('categories');
/*
array:6 [▼ // routes/web.php:9
"created_at" => "2020-01-05 13:42:19.897976"
"icon_url" => "https://api.chucknorris.io/img/avatar/chuck-norris.png"
"id" => "KqoQdIJdSE2ezokPmHSvdw"
"updated_at" => "2020-01-05 13:42:19.897976"
"url" => "https://api.chucknorris.io/jokes/KqoQdIJdSE2ezokPmHSvdw"
"value" => "Одного вечора Чак Норріс поїв чилі на вечерю. А наступного дня стався Великий Вибух."
]
*/
$response->only('id', 'url', 'value');
Рекомендую ознайомитися з класом Fluent у документації Laravel API. Fluent використовує trait InteractsWithData, що містить безліч зручних методів для роботи з даними Fluent.