Система позволяет вызывать классы практически из любого места кода без их предварительного включения. Для этого вам надо правильно именовать классы и поместить файл, содержащий класс, в специальную папку. Другая цель таких соглашений — избежать конфликтов между классами разных расширений. Кроме того, в некоторых ситуациях необходимо придерживаться соглашений, чтобы удовлетворять требованиям хуков. Например, если вы хотите добавить виджет 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');