zend framework 2_best practices (by andrii vasyliev) - hack'n'tell php - 2015.09.26

21
Zend Framework 2 Best practices

Upload: intersog

Post on 15-Jan-2017

295 views

Category:

Education


0 download

TRANSCRIPT

Campaign

proposal Zend Framework 2

Best practices

О докладчике

Васильев Андрей, Team Leader @ INTERSOG Разработкой ПО, в частности на РНР, занимаюсь с 17-ти лет. К этому моменту опыт работы около 7-ми лет. Фан Zend Framework, Zend Framework 2. Работаю в данный момент над высоконагруженным сервисом. Продукт интегрирован с множеством программных решений и является центральным местом в инфраструктуре клиента. Значимые работы: - Сайт “Власный рахунок” для Сильпо - UkrLit.ORG – библиотека украинской литературы, словари и транслитерация - NDA проекты :) Email: [email protected]

О фреймворке

Zend Framework 2 – это ООП фреймворк для разработки на РНР 5.3+. Релиз второй версии состоялся в сентябре 2012 года. Новая версия фреймворка пришла на смену весьма популярному ZF1. Разработчики исправили типовые проблемы ZF1, а также внесли много новых концепций и идей в процессе его разработки. Вторая версия, как совершенно иной продукт – мало чем похожа на предыдущие релизы. ZF2 значительно быстрее первой версии, применяет иные подходы к разработке, которые на практике существенно превосходят решения старого продукта. В виду своей популярности и долгой истории у фреймворка мощное и развитое сообщество.

Rasmus Lerdorf

I really don't like programming. I built this tool to program less so that I could just reuse code.

“ Creator of PHP, Rasmus Lerdorf

Модульность

Позволит вам использовать

компоненты фреймворка месте

или раздельно. Нет необходимости

включать весь фреймворк в

проект.

Используйте модульность для

задания структуры вашему

проекту, для разделения частей

приложения.

Хорошо структурированный код

Поможет Вам не нервничать :)

Конфигурация

PHP arrays – основа конфигурации

приложения.

Для упрощения работы в разном

окружении и сохранности

“секретной” информации

используются global и local файлы.

Local файлы не хранятся под

контролем версий и

переопределяют параметры

заданные в global.

DI, IoC, SM

Dependency Injection – это паттерн

программирования, в основе

которого лежит принцип инверсии

управления (Inversion of Control).

Внедряйте зависимости объекта

из-вне. Это позволит вам сделать

код гибче и упростит процесс его

тестирования.

ServiceManager – это имплементация паттерна Service Locator,

который поможет вам инстанциировать нужный объект и

получить его в нужный момент. ServiceManager также

позволяет ограничить “видимость” объектов на разных слоях

системы. В Zend Framework 2 есть несколько Service

Manager'ов, в каждом из которых свой набор сервисов.

Service Manager также играет роль IoC контейнера. Благодаря

принципу его работы внедрять зависимости достаточно

легко.

Для этого у нас есть: invokables, abstract factories, factories,

initializers, delegators.

Service Manager в ZF2

Initializers

Factories

Aliases

Abstract factories

Delegators

Аспектно-ориентированный дизайн

Парадигма аспектно-ориентированного программирования ярко представлена

событийной моделью фреймворка.

Так, вы можете повысить гибкость приложения за счет использования Event

Manager'a, событий и слушателей. В ZF2 существует возможность подключить

слушателя как на конкретный экземпляр объекта, так и глобально для всего

приложения. Если для события есть слушатели, контроль управления будет

передан им. В слушателе может выполняться дополнительная работа

связанная с поступившим событием.

Event Manager + listener

Event Manager + aggregate

Event Manager + aggregate

Итоги

ZF2 современный РНР фреймворк, отвечающий требованиям и вызовам

нынешнего времени. С его помощью можно строить как небольшие

приложения так и весьма непростые enterprise решения.

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

модульности позволит вам структурировать приложение. Событийная модель

облегчает процесс дополнения функциональности продуктов, а

имплементация IoC поможет внедрить зависимости между классами вашей

системы.

Вопросы?

THANK YOU