Zend Framework 2

Zend Framework выпустил стабильную вторую версию. Кроме названия, Zend Framework 2 можно сказать что это действительно новый проект если сравнивать со старой версией Zend Framework. Потому что Zend Framework был полностью переписан. В этой статье краткий обзор новых функций и изменений, которые были внесены в Zend Framework 2.

Скачать Zend Framework 2

Существует четыре различных способа скачать Zend Framework 2. Первый, это классический способ скачав пакет на странице загрузки или packages.zendframework.com. Второй похож, но вы можете скачать его из репозитория ZF GitHub. Третьим является использование Composer, инструмент для управления зависимостями. Чтобы установить Zend Framework 2 с использованием composer, добавьте следующие строки в ваш файл composer.json:

"repositories": [
  {
    "type": "composer",
    "url": "https://packages.zendframework.com/"
  }
],
"require": {
  "zendframework/zend-config": "2.0.*",
  "zendframework/zend-http": "2.0.*"
}

Четвертый способ заключается в использовании PEAR2_Pyrus, запуск этих команд:

pyrus.phar .
pyrus.phar . channel-discover packages.zendframework.com
pyrus.phar . install zf2/Zend_Framework#Standard

Для второй весии Zend Framework для начала выпущена база каркас приложения, с помощью которого можно приступить к разработке своего приложения. Вы можете скачать его с GitHub или с помощью composer вот так:

composer.phar create-project 
--repository-url="http://packages.zendframework.com" 
zendframework/skeleton-application path/to/install
к меню ↑

Автоматическая загрузка системы

Zend Framework 2 предоставляет вам множество различных вариантов для каждой новой функции. Автозагрузка системы, например, в настоящее время имеет три различных варианта. Вы увидите, что нет никаких следов линий require_once, которые широко используются в первой версии. Единственное зачем нужен require_once, для новых авто-загрузок системы.

Код для использования должен выглядеть следующим образом:

<?php require_once 'Zend/Loader/StandardAutoloader.php';
$autoLoader = new Zend\Loader\StandardAutoloader(array(
'fallback_autoloader' = true,
));
$autoLoader->register();

Этот метод загружает пространства имен классов, используя стандарт PSR-0. Обратите внимание, что установка 'fallback_autoloader' => true разрешает резерв, который позволяет вызывать PHP по умолчанию включение систем, включая те файлы, которые не падают в пространства имен Zend.

Второй метод основан на class map, файл с ассоциативный массив, где ключами являются имена классов и значения их абсолютного пути. Сlass map представляет собой простой файл, который возвращает абсолютный путь, этот метод может быть быстрее по сравнению с предыдущими, до 20% в стандартном использовании или до 80% при использовании системы обход кеша, как APC.

Утомительно в этой системе является создание самого файла карты, особенно для больших проектов. К счастью, команда Zend Framework 2 создали генератор Сlass map, который может автоматически построить карту для вас. По умолчанию он будет искать файлы в текущем каталоге и записать вывод в файл, созданный по указанному пути.

Пример использования:

php classmap_generator.php My/Project

Тем не менее, вы можете настроить скрипт. Для обзора вариантов, посмотрите на документацию генератор Сlass map.
Третий метод очень похож на первый. Отличия только в том случае, если вы можете указать путь к использованию файла заданного пространства имен, как в примерах ниже.

<?php require_once 'Zend/Loader/StandardAutoloader.php';
$autoLoader = new Zend\Loader\StandardAutoloader();
$autoLoader->registerNamespace('ApplicationNamespace', 'Path/to/files');
$autoLoader->register();

Вы можете установить определенный префикс.

<?php require_once 'Zend/Loader/StandardAutoloader.php';
$autoLoader = new Zend\Loader\StandardAutoloader();
$autoLoader->registerNamespace('FilesPrefix_', 'Path/to/files');
$autoLoader->register();
к меню ↑

Управление системой

Разработчики постарались написать код, после инверсии управления (IoC). В wiki  IoC технология программирования, выражено в терминах объектно-ориентированного программирования, в которой объектом связи обязан во время выполнения ассемблер объекта и, как правило, не известны во время компиляции с использованием статического анализа.

к меню ↑

Event-менеджер

Последняя особенность Zend Framework 2 для этой статьи, является новый менеджер событий реализуется классом Zend\ServiceManager, которые заменяют компоненты Zend\Application из предыдущих версий 1.x. Zend Framework 2 теперь событиями. Как вы наверное уже знаете, до фактического запуска действий контроллера, framework делает многое. Во-первых, можно запустить загрузчик, который устанавливает модули app и конфигурации. После загрузки, адрес запроса пользователем анализируется, чтобы направить в правильном направлении (как правило, module/controller/action), а затем запускает диспетчер. В каждом из этих шагов у вас есть набор событий, вы можете управлять почти любым способом, который вы хотите изменить выполнения приложения.

Вы можете добавить события через метод Attach() класса EventManager. Он принимает имя события для прослушивания, функция обратного вызова, которая вызывается при запуске события, и (опционально) параметр, определяющий приоритетные события. В последнем задается положительное целое число, по умолчанию равно 1. Чем выше число, тем выше приоритет и раньше выполняется.

События могут быть вызваны с использованием метода trigger(), который также принадлежит EventManager. Его параметры имя событий в контексте, который обычно представляет собой экземпляр объекта, и который имеет событие (или null, если вы используете анонимные функции), и массив, содержащий параметры для передачи в обработчик событий.

Простой пример:

attach(
   'myEvent',
   function($event) {
      $parameters = $event->getParams();
      echo 'The given name is ' . $parameters['name'] . ' ' . $parameters['surname'];
   },
   100
);
// Fire the event
$parameters = array('name' => 'Viktor', 'surname' => 'Klim');
$event->trigger('myEvent', null, $parameters);
к меню ↑

В заключение

В этой статье вы узнали об основных изменениях в Zend Framework 2:

  • Новая система загрузки основанная на Composer и Pyrus.
  • Новые MVC архитектура основанной на событиях
  • Более высокая производительность
  • Новый класс автозагрузки системы
  • Zend Framework 2 использует несколько новых шаблонов проектирования, как менеджер событий и зависимостей, которые помогут вам отделить код

В Zend Framework 2 теперь широкий спектр новых возможностей и улучшений, которые были введены в новой версии. Эта статья описывает не всё, а только основное. Вы можете скачать копию Zend Framework 2 и исследовать все изменения самостоятельно.