Laravel 5.1: разработка пакетa на примере ACL

Данная статья является первой и вступительной частью о разработке пакетов для Laravel. В этой (первой части) я постараюсь показать как достаточно просто можно создать пакет. При этом, постараюсь показать это на примере создания пакета для управления правами доступа (ACL — Access Control List). В данной части буду создавать структуру пакета, а в дальнейшем расширять.

Если вы загляните в папку vendor то увидите что пакеты «разложены» в виде имя-поставщика/название-пакета (vendor-name/package-name). Все это для удобства публикации ваших пакетов в публичных источниках типа packagist.org. Т.к. этот пакет мы еще только создаем и он еще не готов к публикации то выполним

где packages — папка для разрабатываемых пакетов, Bitw — так я себя обозвал как поставщика и Acl — это название пакета. Так мы создадим папку нашего пакета и перейдем в нее.

Теперь пришло время воспользоваться composer для первичной настройки нашего пакета. Нам необходимо добавить некоторые инструкции для того, что бы автозагрузчик приложения знал где искать файлы нашего пакета и некоторую информацию об авторе пакета, а также там можно подключать другие пакеты указав их в списке зависимостей. Выполним

и ответим на некоторые вопросы. В моем случае получилось так

2015-09-16 00-54-56 1. andrew@iMac-Andrew: ~ www acl.dev packages Bitw Acl (mc)

теперь нам надо немного подкорректировать получившийся файл composer.json. Добавим секцию автозагрузки

создадим папку mkdir src  в которой чуть позднее мы создадим сервис-провайдер нашего пакета, а также будет там реализовывать всю необходимую логику пакета.

Остался последний штрих — указать автозагрузчику где искать файлы нашего пакета. Для этого отредактируем composer.json который находится в корне нашего проекта. В секцию autoload > psr-4 необходимо добавить  "Bitw\\Acl\\": "packages/Bitw/Acl/src"  сохранить изменения и выполнить из корня проекта  composer dump-autoload .

Пришло время создать сервис-провайдер нашего пакета и зарегистрировать его в нашем приложении. Создадим packages/Bitw/Acl/src/AclServiceProvider.php с содердимым

и зарегистрируем его в конфигурации нашего приложения config/app.php. Добавим

в список провайдеров.

Настало время создать контроллер.

содержимое контроллера AclController.php

Создадим файл с роутами  touch packages/Bitw/Acl/src/Http/routes.php

Чтоб добавить маршруты в загрузку необходимо поправить сервис-провайдер AclServiceProvider.php.

Добавам метод boot

Для данной статьи я развернул на локальной машине домен acl.dev. В результате если в браузере набрать http://acl.dev/acl то увидим

На этом я завершаю первую часть.

One thought on “Laravel 5.1: разработка пакетa на примере ACL

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *