26  /  330

Пространства имён

Просмотров: 6554 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 08.02.2017

Понятие пространств имен позволяет давать элементам системы более четкие имена, избавиться от множества префиксов имен, а также избежать потенциальных конфликтов. Все классы, поставляемые в стандартном дистрибутиве, должны находиться в пространстве имен Bitrix, которое не пересекается ни с PHP, ни с разработками партнёров. Каждый стандартный модуль определяет в пространстве имен Bitrix свое подпространство, совпадающее с именем модуля. Например, для модуля forum пространством имен будет Bitrix\Forum, а для модуля main - Bitrix\Main.

Примечание: Для классов партнеров namespace может быть таким:
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), использовать нельзя.

Внимание! В тексте примеров на страницах курсов, как правило, будут отсутствовать упоминания о пространствах имён. Это делает текст читабельнее и проще для восприятия. Перед использованием примеров из документации в ваших проектах необходимо добавить неймспейс.

Это можно сделать:

  • Используя PHPdoc
  • Используя IDE
  • кроме того, из контекста документации, как правило, понятно о каком классе идет речь.

Допустимо сокращение полной записи. Вместо \Bitrix\Main\Class::Function() можно писать Main\Class::Function().


Также допустимо и использование синонимов, вместо длинных пространств имен. Для этого необходимо использовать use. Например, мы имеем длинную конструкцию:

\Bitrix\Main\Localization\Loc::getMessage("NAME");

Чтобы сократить ее, объявим в начале файла синоним и далее уже будем использовать сокращенный вариант вызова:

use \Bitrix\Main\Localization\Loc;
...
Loc::getMessage("NAME");

Список ссылок по теме:


31
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии