PHP 8.5 представляє нове розширення для роботи з URI.

Перекладено ШІ 3 Laravel News 02 червня, 2026

PHP 8.5 приносить нове розширення URI, яке відповідає стандартам та значно полегшує роботу з URL. Дізнайтеся, як Laravel, використовуючи потужний клас URI, може спростити ваші проєкти, і чому вам варто впровадити ці нові можливості у своєму коді

PHP 8.5 презентує нове URI-розширення, яке є стандартним парсером, що відповідає вимогам RFC 3986 і стандарту URL WHATWG, та завжди доступне в стандартній бібліотеці під назвою 'URI'. Документ RFC містить безліч прикладів, ось один з них з посту-анонсу PHP Foundation, що демонструє клас Uri для RFC 3986:

use Uri\Rfc3986\Uri;
 
$url = new Uri('HTTPS://thephp.foundation:443/sp%6Fnsor/');
 
$defaultPortForScheme = match ($url->getScheme()) {
    'http' => 80,
    'https' => 443,
    'ssh' => 22,
    default => null,
};
 
// Видалення стандартних портів з URL.
if ($url->getPort() === $defaultPortForScheme) {
    $url = $url->withPort(null);
}
 
// Геттери нормалізують URL за замовчуванням. Варіанти `Raw` 
// повертають введене значення без змін.
 
echo $url->toString(), PHP_EOL;
// Виводить: https://thephp.foundation/sponsor/
echo $url->toRawString(), PHP_EOL;
// Виводить: HTTPS://thephp.foundation/sp%6Fnsor/

У разі виникнення помилки парсингу створення нового екземпляра викличе виняток UrlValidationError, а статичний метод parse() поверне помилки в переданій змінній:

$url = new Uri\WhatWg\Url("invalid url");
// Виникає Uri\WhatWg\InvalidUrlException
 
$errors = [];
$url = Uri\WhatWg\Url::parse("invalid url", null, $errors);
// Повертається null, а масив об'єктів UrlValidationError
// передається за посиланням до $errors
 
/*
array(1) {
  [0]=>
  object(Uri\WhatWg\UrlValidationError)#1 (2) {
    ["context"]=>
    string(11) "invalid uri"
    ["type"]=>
    enum(Uri\WhatWg\UrlValidationErrorType::MissingSchemeNonRelativeUrl)
    ["failure"]=>
    bool(true)
  }
}
*/

# URIs у Laravel

Хоча важливо, що PHP 8.5 запроваджує компонент URI, сумісний з RFC, для широкої спільноти PHP знадобиться деякий час, щоб повною мірою використати його можливості. Наприклад, поки фреймворки на зразок Laravel не визначать PHP 8.5 як мінімально необхідну версію, вони не зможуть використовувати його нові можливості. Проте ви можете використовувати функції PHP 8.5 у своєму додатку, навіть якщо фреймворки відстають на одну-дві версії.

Тим часом клас URI, введений у Laravel 11.35, використовує пакет league/uri, який реалізує RFC 3986. Клас URI Laravel є потужним і буде працювати з Laravel версії 11.35 і вище 💪.

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

# Дізнайтеся більше

Популярні

Інше, що варто прочитати

15 Оновлено 01 червня, 2026

Журнал аудиту в Laravel

Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту

11 Оновлено 01 червня, 2026

Локальні моделі та їх скоупи в Laravel за допомогою атрибута Scope

В Laravel 12 ми отримали можливість використовувати новий підхід для визначення локальних скоупів у моделях Eloquent. Дізнайтеся, як новий атрибут #[Scope] спрощує цей процес і зберігає ваші назви методів незмінними

26 Оновлено 01 червня, 2026

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!