Компоненти URI-путі за допомогою методу pathSegments() у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 07 травня, 2025
В Laravel з'явився метод pathSegments() для класу Uri, який спрощує доступ до компонентів шляху URI. Хочете дізнатися, як цей новий функціонал може покращити ваш код і зробити його більш читабельним? Читайте далі, щоб дізнатися про переваги використання цього простого, але потужного методу

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