Laravel представляє метод pathSegments() для класу Uri, що забезпечує елегантніший спосіб доступу та маніпулювання компонентами URI. Це нововведення спрощує роботу із сегментами шляху, пропонуючи зручний, колекційний інтерфейс.
Під час роботи з URL у веб-додатках часто виникає потреба виділяти конкретні сегменти. Раніше розробникам доводилося вручну розділяти рядок шляху та створювати колекцію. Тепер клас Uri в Laravel полегшує це за допомогою спеціального методу, який повертає компоненти шляху у вигляді готової до використання колекції:
use Illuminate\Support\Facades\Uri;
$uri = Uri::of('https://laravel.com/docs/11.x/validation');
// Отримати всі сегменти шляху як колекцію
$segments = $uri->pathSegments(); // ['docs', '11.x', 'validation']
// Доступ до специфічних сегментів за допомогою методів колекції
$firstSegment = $segments->first(); // 'docs'
$lastSegment = $segments->last(); // 'validation'
$secondSegment = $segments->get(1); // '11.x'
Поліпшення читабельності та зручності є суттєвими:
// До: ручне розділення рядка та створення колекції
$path = Uri::of('https://laravel.com/docs/11.x/validation')->path();
$segments = collect(explode('/', ltrim($path, '/')));
$firstSegment = $segments->first();
// Після: чистий і зручний підхід
$firstSegment = Uri::of('https://laravel.com/docs/11.x/validation')
->pathSegments()
->first();
Цей метод особливо корисний під час реалізації систем навігації або маршрутизації контенту:
class ProductController extends Controller
{
public function catalog(Request $request)
{
$uri = Uri::of($request->url());
$segments = $uri->pathSegments();
// Витягування категорії та підкатегорії з URL
$department = $segments->get(0); // 'shop'
$category = $segments->get(1); // 'electronics'
$subcategory = $segments->get(2); // 'smartphones'
// Створення навігаційного дерева на основі сегментів шляху
$navigation = $segments->map(function ($segment, $index) use ($segments) {
$url = '/'.implode('/', $segments->take($index + 1)->all());
return ['label' => ucfirst($segment), 'url' => $url];
});
return view('products.catalog', [
'department' => $department,
'category' => $category,
'subcategory' => $subcategory,
'navigation' => $navigation,
]);
}
}
Метод pathSegments() дозволяє створювати більш підтримуваний та виразний код при роботі з URI, підвищуючи читабельність і зменшуючи обсяг шаблонного коду в додатках Laravel