В XML-файлах розширень (модулів, плагінів) Joomla 6 тег <namespace> відіграє критичну роль. Якщо пояснювати просто: це "адреса" або "прізвище" твого коду, яка каже Joomla, де фізично шукати PHP-класи твого модуля.

Namespace допомагає уникнути конфліктів, якщо два розробники назвали свої класи однаково (наприклад, Helper).

Ось детальний розбір того, як це працює в Joomla 6:

1. Структура тегу в XML

У файлі mod_yourmodule.xml це виглядає приблизно так:

<namespace>MyCompany\Module\YourModule</namespace>

2. Що це дає на практиці?

Цей рядок вмикає автозавантаження (PSR-4). Це означає, що тобі більше не потрібно писати require_once для кожного файлу. Joomla "бачить" цей простір імен і автоматично пов'язує його з папкою src твого модуля.

Логіка пошуку файлів: Коли Joomla бачить namespace MyCompany\Module\YourModule, вона очікує таку структуру папок:

  • XML файл: modules/mod_yourmodule/mod_yourmodule.xml
  • PHP класи: modules/mod_yourmodule/src/

Якщо ти створиш файл modules/mod_yourmodule/src/Helper/MyHelper.php, то всередині нього обов'язково має бути прописаний цей же namespace:

<?php
namespace MyCompany\Module\YourModule\Helper;
// Тепер цей клас доступний всюди в Joomla за цією адресою
class MyHelper {
// твій код
}
?>

3. Чому це важливо для Joomla 6?

Joomla 6 повністю відходить від застарілих методів завантаження файлів.

  • Без namespace: Тобі доведеться вручну підключати файли через include.
  • З namespace: Ти просто пишеш use MyCompany\Module\YourModule\Helper\MyHelper; у будь-якому місці сайту, і Joomla сама знайде і завантажить цей файл.

4. Правила написання (Стандарт)

Для модулів Joomla рекомендує дотримуватися такого формату: [Vendor]\[Type]\[Name]

  • Vendor: Твоє ім'я або назва компанії (наприклад, MyCompany).
  • Type: Завжди Module (якщо це модуль).
  • Name: Назва твого розширення в CamelCase (наприклад, YourModule).

Разом: <namespace>MyCompany\Module\YourModule</namespace>

Порада:

Якщо ти створюєш власний модуль (наприклад, для виводу цін або списку матеріалів), обов'язково додай цей тег. Це зробить твій код сучасним і сумісним з майбутніми оновленнями Joomla.

Важливо: Після того, як ти зміниш або додасиш <namespace> у XML-файлі вже встановленого модуля, іноді потрібно натиснути "Оновити структуру" в менеджері розширень або перевстановити модуль, щоб Joomla оновила свій внутрішній список шляхів (autoload_psr4.php).