# Соглашения по именованию классов

Система позволяет вызывать классы практически из любого места кода без их предварительного включения. Для этого вам надо правильно именовать классы и поместить файл, содержащий класс, в специальную папку. Другая цель таких соглашений — избежать конфликтов между классами разных расширений. Кроме того, в некоторых ситуациях необходимо придерживаться соглашений, чтобы удовлетворять требованиям хуков. Например, если вы хотите добавить виджет dashboard (информационная панель), вам необходимо придерживаться соглашений, потому что система должна автоматически найти и загрузить этот класс.

Соглашения по именованию заключаются в следующем:

- Имя класса должно начинаться с префикса Modules_ExtensionName. Здесь ExtensionName — ID расширения, измененный следующим образом:

  1. Капитализируйте первую букву и все буквы после тире.

  2. Удалите все тире.

  Пример: если ID вашего расширения — «my-site», имя класса должно начинаться с «Modules_MySite».

- Имя класса должно включать путь к папке, в которой находится файл с содержимым класса. Косые черты (/) в этом пути заменяются на подчеркивания (_). Путь должен быть указан относительно папки `/plib/library/` расширения.

  Например, если класс находится в файле `/plib/library/website/Promo.php`, а идентификатор расширения ? my-site, имя класса должно быть:

  Modules_MySite_Website_Promo.

Zend использует аналогичный подход к автозагрузке классов. Читайте об этом больше здесь.

## Ограничения

Автозагрузка классов не работает в папке `/htdocs/public/`. Если вам требуется эта возможность, запустите автозагрузку вручную, добавив следующий код в начале файла:

    require_once('sdk.php');