Дата последнего изменения: 27.10.2020
Понятие пространств имен позволяет давать элементам системы более четкие имена, избавиться от множества префиксов имен, а также избежать потенциальных конфликтов. Все классы, поставляемые в стандартном дистрибутиве, должны находиться в пространстве имен Bitrix, которое не пересекается ни с PHP, ни с разработками партнёров. Каждый стандартный модуль определяет в пространстве имен Bitrix свое подпространство, совпадающее с именем модуля. Например, для модуля forum пространством имен будет Bitrix\Forum, а для модуля main - Bitrix\Main.
namespace Asd\Metrika; class CountersTable extends Entity\DataManager { ....
Это значит, что данный класс (в /lib/
) принадлежит модулю asd.metrika и к нему (после подключения указанного модуля) можно обращаться так:
\Asd\Metrika\CountersTable::update();
Сам класс лежит в файле asd.metrika/lib/counters.php
.
При необходимости модуль может организовывать подпространства внутри своего пространства имен. Например, Bitrix\Main\IO, Bitrix\Forum\SomeName\SomeNameTwo. Но такой возможностью следует пользоваться только если это оправдано для организации правильной архитектуры данного модуля.
Примеры:
namespace Bitrix\Main\Localization; namespace Bitrix\Main\Entity\Validator;
Сокращения, не являющиеся общепринятыми (в Bitrix Framework), использовать нельзя.
Это можно сделать:
Допустимо сокращение полной записи. Вместо \Bitrix\Main\Class::Function()
можно писать Main\Class::Function()
.
Также допустимо и использование синонимов, вместо длинных пространств имен. Для этого необходимо использовать use
. Например, мы имеем длинную конструкцию:
\Bitrix\Main\Localization\Loc::getMessage("NAME");
Чтобы сократить ее, объявим в начале файла синоним и далее уже будем использовать сокращенный вариант вызова:
use \Bitrix\Main\Localization\Loc; ... Loc::getMessage("NAME");
Список ссылок по теме: