Существует по меньшей мере два способа создания нового модуля. Первый - скопировать существующий модуль из каталога APP_DIR/module (например, Application), удалить все ненужные контроллеры, модели и представления и изменить имя существующего пространства имен на имя вашего модуля в каждом исходном файле. Это может быть довольно скучным занятием.
Второй способ - скачать пустой скелетный модуль с официального репозитория Zend Framework на GitHub. Его можно найти по этой ссылке. Вы можете либо скопировать код, либо (что рекомендуется) скачать его в виде ZIP-архива.
Например, в Linux, для загрузки скелетного модуля используются следующие команды:
cd ~
wget https://github.com/zendframework/ZendSkeletonModule/archive/master.zip
unzip master.zip
cp ZendSkeletonModule-master APP_DIR/module/ZendSkeletonModule
Эти команды скачивают исходный код скелетного модуля в ваш домашний каталог, распаковывают
архив и копируют файлы в каталог module
вашего веб-сайта.
Давайте посмотрим на структуру скелетного модуля (см. рисунок 14.1)
Как видите, скелетный модуль имеет типичную структуру каталогов, с которой мы уже знакомы:
config
содержит файл module.config.php
- файл конфигурации для этого модуля.src
- это каталог, содержащий исходные файлы модуля:Controller
содержит образец класса контроллера.Module.php
- это точка входа в модуль. Мы поговорим о нем немного позже.tests
содержит функции-заглушки для юнит-тестирования. В этой книге в целях упрощения мы не рассматриваем юнит-тестирование. view
содержит скрипты видов (и также может содержать шаблоны лэйаутов для конкретного модуля).Перед тем, как начать использовать созданный нами модуль, нужно выбрать для него имя. Хорошее имя должно описывать
модуль. Например, имя Admin
- неплохой вариант, если вам нужен модуль для бэк-энда. Имя Blog
подойдет, если в
этом модуле вы планируете хранить функциональность блога. Кроме того, перед именем модуля стоит добавлять название
компании , например, YourCompanyBlog
.
После того, как вы выбрали имя для модуля, нужно переименовать каталог, содержащий его файлы. Например, команда
ниже переименует модуль в Admin
:
mv ZendSkeletonModule Admin
Затем нужно переименовать SkeletonController.php
во что-то более наглядное. Не забудьте также переименовать подкаталоги
каталога view
так, чтобы они отражали имя контроллера.
Наконец, пройдите по файлам конфигурации и исходного кода контроллера и убедитесь, что вы изменили имя пространства имен
ZendSkeletonModule
на имя вашего модуля (это необходимо для обеспечения того, что ваши классы будут найдены автозагрузчиком классов PHP).
Последним шагом будет включение автозагрузки PHP-классов. Наши исходные файлы модуля будут организованы таким образом, чтобы
соответствовать стандарту PSR-4, так что мы сможем использовать стандартный автозагрузчик, предоставляемый Composer'ом. Для
этого добавьте следующую строку под ключ psr-4
в файле composer.json
(если у вас другое имя модуля, замените Admin на него):
...
"autoload": {
"psr-4": {
...
"Admin\\": "module/Admin/src/"
}
},
...
Затем запустите следующую команду для того, чтобы Composer обновил свои файлы автозагрузки:
php composer.phar dump-autoload
Команда Composer'а
dump-autoload
просто регенерирует код автозагрузчика без установки/обновления зависимостей.
Отлично! Теперь модуль готов к использованию. Вы можете добавить в него контроллеры, модели и представления. Не забудьте
изменить файл module.config.php
и зарегистрировать маршруты, сервисы, контроллеры, плагины контроллеров, помощники
представлений и т.д.
Чтобы дать знать ZF3 о новом модуле и чтобы он загрузился при старте приложения, не забудьте включить созданный модуль в файле APP_DIR/config/modules.config.php, как показано ниже:
return [
'Admin',
//...
);