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