Zend Framework 2

Zend Framework 2

Пример разработки блога на Zend Framework 2. Работа с пользователями / Хабрахабр. Это третья (последняя?) часть статьи, посвященной разработке простого приложения при помощи Zend Framework 2.

Zend Framework 2

В первой части я рассмотрел структуру Zend. Skeleton. Application, во второй части привел пример разработки простого модуля. Эта часть посвящена работе с пользователями, а также я прикручу к проекту шаблонизатор Twig. Работа с пользователями. Код написанный в предыдущих частях, позволяет создавать, редактировать и удалять блогпосты всем посетителям сайта.

  1. Здравствуйте дорогие хабражители. Совсем недавно вышел в свет Zend Framework 2. Однако его изучение у многих усложняет .
  2. Лицензия · New BSD License. Zend Framework — свободный фреймворк на PHP для разработки веб-приложений, .
  3. Это третья (последняя?) часть статьи, посвященной разработке простого приложения при помощи Zend Framework 2. В первой части я .
  4. Каждый компонент Zend Framework 2 является уникальным и разработан с минимальными зависимостями от других компонентов. ZF2 следует .

Добро пожаловать на сайт Украинского сообщества Zend Framework 2. Здесь Вы сможете найти русскоязычную документацию, мануалы, а так же . Сейчас я решил освоить основы двух-трех популярных PHP-фреймфорков и первыми я решил изучить Zend Framework 2 и Yii.

Такой подход неприемлем для любого рабочего сайта, поэтому сейчас настало время решить вопросы регистрации/авторизации и распределения прав доступа к различным возможностям приложения. Ловля Щуки На Мертвую Рыбу здесь. Zf Commons. Для Zend фреймворка написано достаточно много модулей, решающих стандартные задачи, найти их можно на специальном сайте: modules.

Вместо разработки своих велосипедов для решения стандартных задач я считаю более правильным использовать/адаптировать под себя готовые решения (по крайней мере готовые решения нужно изучить прежде чем браться за разработку велосипеда). Среди множества разработчиков модулей выделяется команда ZF Commons, ребятами из этой команды разработан ряд очень полезных модулей, которые мы будем использовать в этом проекте: github. ZF- Commons. Рассмотрим некоторые из них, которые необходимы нам на данном этапе. Zfc. Base. Ядро, от которого зависят другие модули ZF Commons (https: //github.

ZF- Commons/Zfc. Base). Zfc. User. Модуль, реализующий механизмы регистрации/авторизации пользователей, профиль пользователя и View хелперы для использования в шаблонах (https: //github. ZF- Commons/Zfc. User).

Zfc. User. Doctrine. ORM. По умолчанию, Zfc. User работает со стандартным для фреймворка механизмом работы с БД, так как в нашем проекте используется Doctrine ORM, также нужен модуль Zfc. User. Doctrine. ORM (https: //github.

ZF- Commons/Zfc. User. Doctrine. ORM). Zfc.

Twig. Модуль для интеграции с шаблонизатором Twig (https: //github. ZF- Commons/Zfc. Twig). Bjy. Authorize. Кроме модулей от Zf. Commons я буду использовать модуль Bjy. Authorize, который предоставляет удобный механизм для распределения прав доступа.

Логика работы модуля простая и распространенная среди других фреймворков. Модуль оперирует понятиями: пользователь, роль и guard. Пользователь может быть авторизованным и не авторизованным. Авторизованный пользователь может иметь одну или несколько ролей. Guard в данном контексте — это контроллер/действие, к которому мы настраиваем права доступа для разных ролей. Подготовка к настройке пользователей. Прежде чем настраивать работу с пользователями необходимо создать entity для пользователя и роли, которые будут использоваться Доктриной.

В комплекте с модулем Bjy. Authorize идут примеры таких сущностей, на их основе я создал модуль My. User. Модуль не содержит ничего оригинального, посмотреть его код можно тут: github.

My. User, по своей структуре он не отличается от рассмотренных выше модулей Application и My. Blog: содержит конфиг и 2 entity.

Следует обратить внимание только на его конфиг (https: //github. My. User/config/module. Настройки некоторых из этих модулей будут переопределены настройками самописных модулей, поэтому эти модули необходимо добавить вверх списка. Теперь нужно скопировать файл zfcuser.

В этом конфигурационном файле нужно задать значение: 'table. Полную версию этого файла вы можете посмотреть на Гитхабе github. If this guard is specified here (i. Сейчас в этом легко убедиться перейдя по ссылке /blog/add — будет возвращена ошибка 4.

Сейчас мы можем зарегистрироваться по ссылке /user/register и присвоить своему пользователю права администратора SQL- запросом: INSERT INTO user. Модуль Bjy. Authorize содержит View- плагин is. Allowed, который позволяет легко исправить проблему. Добавим в шаблоны строчки такого вида: if ($this- > is. Allowed('controller/My.

Blog\Controller\Blog. Post: edit')) . PHP- шаблонизатор Twig изначально был разработан Armin’ом Ronacher’ом — автором Jinja 2, а затем за его поддержку и развитие взялся Fabien Potencier — разработчик фреймворка Symfony. Одним из ключевых отличий Твига от встроенного в Zend Framework шаблонизатора является то, что в Twig- шаблонах нельзя использовать PHP- код, вместо этого в шаблонизаторе реализован собственный синтаксис для реализации циклов, условных операторов и т. Twig- шаблоны компилируются в PHP- код и как следствие не проигрывают в производительности PHP- коду. Благодаря таким особенностям как наследование шаблонов, макросы, система фильтров и т. Twig- шаблоны получаются компактными и легко читаемыми.

Установка. Для установки Твига достаточно выполнить стандартные действия: добавить строчку в composer. Теперь к модулям, которые будут использовать этот шаблонизатор, в конфигурационный файл в секцию view. Причем оба шаблонизатора (Твиг и дефолтный) могут использоваться вместе, то есть часть шаблонов может быть реализована на одном шаблонизаторе, часть на другом. Twig- шаблоны. Упомянутое выше наследование шаблонов означает, что мы можем создать дефолтный шаблон layout. Я начал со стандартного шаблона layout. Zend Skeleton Application, найти его можно в модуле My. Blog в директории view/layout github.

My. Blog/view/layout/layout. Обратите внимание на то, насколько компактнее стало, например, использование view- хелперов, теперь вместо: < ? Первым делом в директории view модуля создадим поддиректорию macros и в ней файл forms. На вход он получает параметры поля, на выходе возвращает html- разметку. Сейчас можно удалить существующий шаблон add.

Я не затронул массу важных моментов, таких как логгирование, кеширование, Dependency Injection, написание тестов и т. Но я надеюсь, что для разработчиков начинающих изучать Zend Framework 2 эта статья поможет стать полезной отправной точкой. Я написал все 3 части этой статьи еще до публикации первой части и на момент завершения работы над текстом планировал на этом закончить.

После прочтения комментариев я решил немного усовершенствовать приложение: использовать REST, вместо проверок на тип запроса GET/POST,перенести часть задач на хуки перед экшенами,перенести часть задач на хуки Доктрины,избавиться от магических констант,перенести конфиги в yaml,заменить часть вызовов на DI(?). На подготовку этих изменений уйдет некоторое время, надеюсь опубликовать четвертую часть статьи в скором времени.

Zend Framework 2
© 2017