---
title: "Совет по Joomla: использовать класс Joomla\\Uri\\Uri для создания URL - WebTolk"
description: "Как собирать url в php коде Joomla с помощью класса Joomla\\Uri\\Uri. Веб-разработка, примеры кода. parse_url"
url: "https://web-tolk.ru/blog/sovet-po-joomla-ispolzovat-klass-joomla-uri-uri-dlya-sozdaniya-url"
date: "2025-01-16T11:07:19+00:00"
language: "ru-RU"
---

# Совет по Joomla: использовать класс Joomla\Uri\Uri для создания URL

 Автор: Сергей Толкачев Создано: 16 января 2025 Обновлено: 01 сентября 2025 Просмотров: 1143

При построении url в коде можно собрать всё строками с конкатенацией вида

```
<?php
$url = $domain.'/index.php?option='.$option.'&view='.$view.'&param1='.$value1;
```

и для небольших строк это может быть даже и удобно. Но если параметров много или они требуют стандартизации / чистки в процессе, то уже не все так удобно и очевидно. Например, в части url может быть ведущий слеш (слеш в начале фрагмента url) и пришедший домен для запроса тоже может оканчиваться на слеш - и вот мы получаем некорректный url для запроса с двойным слешем где-нибудь в середине...

Для задач стандартизации и единообразия получения url в Joomla есть класс `Joomla\Uri\Uri`. Раньше, с Joomla 1.6 и старше он назывался `JUri`. Этот класс обеспечивает работу с url по стандарту **RFC3986** и берет на себя работу по разбору url на запчасти или по сборке url из запчастей ))

## Пример: получить конкретный параметр из url в Joomla

```
<?php
use Joomla\Uri\Uri;

$url = 'https://web-tolk.ru/dev/biblioteki?param=value';
$uri = new Uri($url);
// здесь выведет строку 'value'
echo $uri->getVar('param');
```

Да, есть же нативная PHP функция `parse_url`, скажете вы... Но класс **Uri** обеспечивает безопасную работу с UTF-8 в url, в том числе с кириллическими доменами. Дабы не писать различные проверки самостоятельно - можно воспользоваться возможностями ядра Joomla.

## Как собрать нужный url PHP кодом в Joomla

Тут тоже все просто:

```
<?php
use Joomla\Uri\Uri;

$uri = new Uri;
$uri->setHost('web-tolk.ru');
$uri->setScheme('https');
// setPath() начинаем со слеша
$uri->setPath('/dev/biblioteki');
// GET-параметры можно передать массивом
$vars = [
        'param1' => 'value1',
        'param2' => 'value2',
        'param3' => 'value3',
];
$uri->setQuery($vars);
// выводим в строку наш url
echo $uri->toString();
```

Иерархия классов `Uri` в Joomla сделана так, что методы-геттеры находятся в классе `AbstractUri`, а сеттеры - в классе `Uri`. Сеттеры можно посмотреть в файле **libraries/vendor/joomla/uri/src/Uri.php**. Геттеры смотрим в файле **libraries/vendor/joomla/uri/src/AbstractUri.php**.

Если у вас есть PHP Storm, то он прекрасно знает Joomla и подсказывает всё, что нужно.

Ну и можно дать ссылку на [страницу старой документации](https://docs.joomla.org/API16:JURI), которая до сих пор в большей своей части актуальна с поправкой на использование неймспейсов.

А это структура Url для общего понимания:

```
foo://example.com:8042/over/there?name=ferret#nose
     \_/   \______________/\_________/ \_________/ \__/
      |           |            |            |        |
   scheme     authority       path        query   fragment
```

- [Пост в Telegram канале](https://t.me/webtolkru/278)
- [Этот текст на dev.to](https://dev.to/sergeytolkachyov/joomla-tip-use-the-joomlauriuri-class-to-create-a-url-7ib)

## Об авторе

![Толкачев Сергей Юрьевич](https://web-tolk.ru/images/uslugi/sergey-tolkachyov-apr-2023.webp)

### Толкачев Сергей Юрьевич

Joomla-разработчик. [Контрибьютер ядра Joomla](https://github.com/joomla/joomla-cms/pulls?q=is%3Apr+author%3Asergeytolkachyov+). Один из ведущих Telegram-канала русскоязычного Joomla-сообщества [JoomlaFeed](https://t.me/joomlafeed), один из модераторов [чата русскоязычного Joomla-сообщества](https://t.me/joomlaru). Мои расширения в официальном маркетплейсе расширений Joomla - [Joomla Extensions Directory](https://extensions.joomla.org/profile/profile/details/528051/). Имею публикации в [официальном журнале международного Joomla-сообщества - Joomla Community Magazine](https://magazine.joomla.org/authors/sergeytolkachyov) и на [официальном сайте русскоязычного Joomla-сообщества](https://joomlaportal.ru/users/sergey-tolkachyov).

Муж. Отец 3 детей.

Россия, Саратов.

## JSON-LD Schema

```json
{
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "@id": "https://web-tolk.ru/#/schema/BreadcrumbList/17",
    "itemListElement": [
        {
            "@type": "ListItem",
            "position": 1,
            "item": {
                "@id": "https://web-tolk.ru/",
                "name": "Главная"
            }
        },
        {
            "@type": "ListItem",
            "position": 2,
            "item": {
                "@id": "https://web-tolk.ru/blog",
                "name": "Блог"
            }
        },
        {
            "@type": "ListItem",
            "position": 3,
            "item": {
                "name": "Совет по Joomla: использовать класс JoomlaUriUri для создания URL"
            }
        }
    ]
}
```

```json
{
    "@context": "https://schema.org",
    "@graph": [
        {
            "@type": "Organization",
            "@id": "https://web-tolk.ru/#/schema/Organization/base",
            "name": "WebTolk",
            "url": "https://web-tolk.ru/",
            "logo": {
                "@type": "ImageObject",
                "@id": "https://web-tolk.ru/#/schema/ImageObject/logo",
                "url": "images/webtolk-1080p.jpg",
                "contentUrl": "images/webtolk-1080p.jpg",
                "width": 1920,
                "height": 1080
            },
            "image": {
                "@id": "https://web-tolk.ru/#/schema/ImageObject/logo"
            },
            "sameAs": [
                "https://github.com/WebTolk",
                "https://github.com/sergeytolkachyov",
                "https://vk.com/web_tolk",
                "https://vk.com/webtolkru",
                "https://tenchat.ru/sergeytolkachyov",
                "https://t.me/sergeytolkachyov",
                "https://t.me/webtolkru"
            ]
        },
        {
            "@type": "WebSite",
            "@id": "https://web-tolk.ru/#/schema/WebSite/base",
            "url": "https://web-tolk.ru/",
            "name": "WebTolk",
            "publisher": {
                "@id": "https://web-tolk.ru/#/schema/Organization/base"
            }
        },
        {
            "@type": "WebPage",
            "@id": "https://web-tolk.ru/#/schema/WebPage/base",
            "url": "https://web-tolk.ru/blog/sovet-po-joomla-ispolzovat-klass-joomla-uri-uri-dlya-sozdaniya-url",
            "name": "Совет по Joomla: использовать класс Joomla\\Uri\\Uri для создания URL - WebTolk",
            "description": "Как собирать url в php коде Joomla с помощью класса Joomla\\Uri\\Uri. Веб-разработка, примеры кода. parse_url",
            "isPartOf": {
                "@id": "https://web-tolk.ru/#/schema/WebSite/base"
            },
            "about": {
                "@id": "https://web-tolk.ru/#/schema/Organization/base"
            },
            "inLanguage": "ru-RU",
            "breadcrumb": {
                "@id": "https://web-tolk.ru/#/schema/BreadcrumbList/17"
            }
        },
        {
            "@type": "Article",
            "@id": "https://web-tolk.ru/#/schema/com_content/article/121",
            "isPartOf": {
                "@id": "https://web-tolk.ru/#/schema/WebPage/base"
            }
        }
    ]
}
```
