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

0
Перекладено ШІ
Оригінал: 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

Популярні

Logomark Logotype

Все, що потрібно знати про Laravel 13

Laravel 13 вийде в березні 2026 року й вимагатиме мінімум PHP 8.3. Хочете дізнатися, як PHP‑атрибути для моделей, нові налаштування черг і метод Cache::touch() вплинуть на вашу розробку?

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті