Робота з класом Uri у Laravel для вдосконалення маніпуляцій з URL

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 19 березня, 2025
Досліджуйте потужність нового класу Uri у Laravel, який змінює спосіб роботи з URL. У нашій статті ви дізнаєтеся, як цей елегантний абстрактний інтерфейс спрощує складні трансформації URL та покращує читабельність коду

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

Основна реалізація демонструє його зрозумілий синтаксис:

$uri = Uri::of('https://laravel.com')
    ->withQuery(['name' => 'Taylor'])
    ->withPath('/docs/installation')
    ->withFragment('hello-world');
// https://laravel.com/docs/installation?name=Taylor#hello-world

Ось практичний приклад використання класу Uri у сервісі розподілу контенту:

class ContentDistribution
{
    public function createCampaignUrl(string $baseUrl, Campaign $campaign)
    {
        return Uri::of($baseUrl)
            ->withPath('/content/' . $campaign->slug)
            ->withQuery([
                'source' => $campaign->source,
                'medium' => $campaign->medium,
                'campaign' => $campaign->name,
                'token' => $this->generateToken($campaign->id)
            ]);
    }
 
    public function buildEmbeddableLinks(Media $media)
    {
        $baseUrl = config('app.media_url');
        $mediaUrl = Uri::of($baseUrl)->withPath('/embed/' . $media->uuid);
 
        return [
            'standard' => (string) $mediaUrl,
            'autoplay' => (string) $mediaUrl->withQuery(['autoplay' => 1]),
            'timestamped' => (string) $mediaUrl->withQuery([
                'start' => $media->highlight_timestamp,
                'theme' => 'dark'
            ]),
            'iframe_src' => (string) $mediaUrl->withQuery(['iframe' => 1])
        ];
    }
}

Клас Uri в Laravel значно покращує читабельність коду при роботі зі складними URL, забезпечуючи при цьому безпечніший спосіб маніпуляції URL, що запобігає поширеним помилкам у конкатенації рядків