A free and open-source book on ZF3 for beginners


14.2. Как создать новый модуль?

Существует по меньшей мере два способа создания нового модуля. Первый - скопировать существующий модуль из каталога 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)

Рисунок 14.1. Структура каталогов скелетного модуля Рисунок 14.1. Структура каталогов скелетного модуля

Как видите, скелетный модуль имеет типичную структуру каталогов, с которой мы уже знакомы:

14.2.1. Переименование скелетного модуля

Перед тем, как начать использовать созданный нами модуль, нужно выбрать для него имя. Хорошее имя должно описывать модуль. Например, имя Admin - неплохой вариант, если вам нужен модуль для бэк-энда. Имя Blog подойдет, если в этом модуле вы планируете хранить функциональность блога. Кроме того, перед именем модуля стоит добавлять название компании , например, YourCompanyBlog.

После того, как вы выбрали имя для модуля, нужно переименовать каталог, содержащий его файлы. Например, команда ниже переименует модуль в Admin:

mv ZendSkeletonModule Admin

Затем нужно переименовать SkeletonController.php во что-то более наглядное. Не забудьте также переименовать подкаталоги каталога view так, чтобы они отражали имя контроллера.

Наконец, пройдите по файлам конфигурации и исходного кода контроллера и убедитесь, что вы изменили имя пространства имен ZendSkeletonModule на имя вашего модуля (это необходимо для обеспечения того, что ваши классы будут найдены автозагрузчиком классов PHP).

14.2.2. Включение автозагрузки классов

Последним шагом будет включение автозагрузки 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 и зарегистрировать маршруты, сервисы, контроллеры, плагины контроллеров, помощники представлений и т.д.

14.2.3. Включение модуля

Чтобы дать знать ZF3 о новом модуле и чтобы он загрузился при старте приложения, не забудьте включить созданный модуль в файле APP_DIR/config/modules.config.php, как показано ниже:

return [
    'Admin',
    //...
);

Top