Как верно давать наименования папкам в модуле Битрикс

В разработке под Битрикс и в соответствии с PSR-4 (стандарт автозагрузки PHP) действуют следующие правила для именования папок и пространств имён:


1. Физическая папка в файловой системе: `settings` (строчные буквы)
- Правило: Все папки в проекте должны называться в нижнем регистре (например, `lib/settings/`).  
- Причина:  
  - Кроссплатформенная совместимость (Linux/Mac чувствительны к регистру, Windows — нет).  
  - Соответствие рекомендациям PSR-4 и Composer.  
- Пример пути

   /local/modules/decorateursite/lib/settings/FormOptionsBuilder.php


2. Namespace в коде: `Settings` (заглавная буква)
- Правило: Пространство имён (namespace) должно отражать логическую структуру и начинаться с заглавной буквы, даже если папка в lowercase.  
- Пример:  

   namespace Bazarow\DecorateUrSite\Settings; // Заглавная "S"!
  class FormOptionsBuilder {}

- Важно:  
  - Битрикс и Composer не требуют точного соответствия регистра папки и namespace.  
  - Но для единообразия лучше использовать `namespace Settings` + папку `settings/`.


3. Автозагрузка в `include.php`
Регистрация класса должна точно совпадать с namespace (заглавные буквы):  

 CModule::AddAutoloadClasses('decorateursite', [
    'Bazarow\\DecorateUrSite\\Settings\\FormOptionsBuilder' => 'lib/settings/FormOptionsBuilder.php',
]);

- Путь к файлу (`lib/settings/`) — в lowercase.  
- Namespace (`Settings`) — с заглавной буквы.  


4. Почему такая путаница?
- Исторически в Битрикс папки часто называли в lowercase (например, `classes/general/`).  
- PSR-4 допускает несоответствие регистра папки и namespace, но это усложняет поддержку.  
- Лучшая практика:  

  Папка: lib/settings/ → namespace: Settings


5. Что делать, если класс не находится?
1. Проверьте:  
   - Физический путь: `lib/settings/FormOptionsBuilder.php` (строчные буквы).  
   - Namespace в файле: `namespace Bazarow\DecorateUrSite\Settings` (заглавная "S").  
   - Регистр в `AddAutoloadClasses()` (должен совпадать с namespace).  
2. Очистите кэш Битрикс:  

    bash
   php /bitrix/modules/main/tools.php clear_cache



Итог
Объект Регистр Пример
Физическая папка settings (строчные) /lib/settings/
Namespace Settings (заглавная) namespace ...\Settings
Автозагрузка Точное совпадение с namespace '...\\Settings\\Class' => 'lib/settings/Class.php'

Рекомендация:  
Следуйте этому правилу, чтобы избежать ошибок автозагрузки на Linux-серверах и сохранить код в едином стиле.

bitrixone © 2025