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