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, що запобігає поширеним помилкам у конкатенації рядків