Використання URI в Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 20 грудня, 2024
Laravel 11.35 представив клас `Uri`, який спростить маніпуляції з URI у вашій аплікації. Наскільки зручним виявиться це нововведення для ваших проєктів? Читайте статтю, щоб дізнатися більше

Laravel 11.35 представив клас Uri, розроблений на основі бібліотеки URI від PHP League. Цей клас спрощує маніпуляцію та роботу з URI у ваших додатках на Laravel, а також пропонує зручні функції для роботи з іменованими маршрутами.

# Основні маніпуляції

Основна функція класу Uri — створення та маніпуляція URI-строками, включаючи запити, фрагменти та шляхи:

use Illuminate\Support\Uri;

$uri = Uri::of('https://laravel-news.com')
    ->withPath('links')
    ->withQuery(['page' => 2])
    ->withFragment('new');

(string) $url; // https://laravel-news.com/links?page=2#new

$uri->path(); // links
$uri->scheme(); // https
$uri->port(); // null
$uri->host(); // laravel-news.com

Зверніть увагу на різницю між отриманням значення URI та його декодуванням:

Приклад маніпуляції з URI
Приклад базових маніпуляцій з URI, значення та декодування.

# Перевірка та маніпуляція запитами

Перевірка та маніпуляція параметрами запиту URI стали ще простішими в Laravel завдяки класу UriQueryString. Цей клас використовує трейти InteractsWithData, який надає безліч корисних методів для обробки рядків запиту:

use Illuminate\Support\Uri;

$uri = Uri::of("https://laravel-news.com")
    ->withPath("links")
    ->withQuery(["page" => 2, 'name' => ''])
    ->withFragment("new");

$uri->query()->all(); // ["page" => "2"]

$uri->query()->hasAny("page", "limit"); // true
$uri->query()->has("name"); // true
$uri->query()->has('limit'); // false
$uri->query()->missing('limit'); // true

$uri->query()->filled('page'); // true
$uri->query()->filled("name"); // false
$uri->query()->isNotFilled("name"); // true
$uri->query()->isNotFilled("page"); // false

$uri->query()->string("page", "1"); // Stringable{ value: 2 }
$uri->query()->integer("limit", 10); // 10

Досліджуйте всі корисні методи, які InteractsWithData надає для інстанцій UriQueryString, щоб впевнено працювати з даними запитів.

# Отримання інстанції Uri з іменованих маршрутів, шляхів та поточного запиту

Клас Uri може також створювати URI з іменованого маршруту вашого додатку, відносного URL або поточного Request інстансу:

// Використання іменованого маршруту
(string) Uri::route("dashboard"); // http://laravel.test/dashboard

// Використання кореневого URL
(string) Uri::to("/dashboard"); // http://laravel.test/dashboard

// З поточного запиту
function (Request $request) {
    (string) $request->uri(); // http://laravel.test/dashboard
}

З версії Laravel 11.36 клас Uri автоматично створює псевдонім у додатках Laravel, що означає, що ви можете використовувати його без імпорту Illuminate\Support\Uri.

# Досліджуйте більше

Сподіваємося, вам сподобається використовувати Uri у ваших додатках на Laravel! Клас Uri був випущений у Laravel 11.35 у #53731. Також ознайомтеся з InteractsWithData, що надає безліч корисних методів для роботи з класом Uri, класом Fluent та класом HTTP запитів Laravel (завдяки InteractsWithInput).