Что интересного нас ожидает в Zend Framework 1.10

Сегодня, вышел первый alpha релиз новой версии Zend Framework под номер 1.10. В этом релизе меня заинтересовало очень много новых компонентов и несколько значительных доработок.

Вот список компонентов которые мне приглянулись и которые я буду использовать в работе после релиза:

  • Zend_Cache_Manager
  • Zend_Feed_Writer
  • Zend_Markup
  • Zend_Service_LiveDocx

Zend_Cache_Manager

Не секрет что в больших приложениях нужно несколько систем кеширования. Страницы которые не меняются, нужно сразу кешировать в статику, а запросы к базе данных нужно кешировать другим способом. Zend_Cache_Manager позволяет задавать шаблоны для создания нужного объекта кеширования. После этого в любой момент вы можете получить к нему доступ.

<?php

$manager = new Zend_Cache_Manager;

$dbCache = array(
    'frontend' => array(
        'name' => 'Core',
        'options' => array(
            'lifetime' => 7200,
            'automatic_serialization' => true
        )
    ),
    'backend' => array(
        'name' => 'Core',
        'options' => array(
            'cache_dir' => '/path/to/cache'
        )
    )
);

$manager->setCacheTemplate('database', $dbCache);

$pageCache = array(
    'frontend' => array(
        'name'    => 'Output',
        'options' => array(
            'ignore_user_abort' => true,
        ),
    ),
    'backend' => array(
        'name'    => 'Static',
        'options' => array(
            'public_dir' => '../public',
        ),
    ),
);

$manager->setCacheTemplate('page', $pageCache);

// Возвращает объект кеширования с настройками для 'database'
$databaseCache = $manager->getCache('database');

Zend_Feed_Writer

Как и Zend_Feed_Reader, Zend_Feed_Writer предоставляет возможность создавать фиды не думаю о том в каком формате их нужно выводить. Zend_Feed_Writer реализует прекрасный OOP API для добавления новых записей.

<?php

/**
 * Создаю фид
 */
$feed = new Zend_Feed_Writer_Feed;
$feed->setTitle('Заголовок блога');
$feed->setLink('http://www.example.com');
$feed->setFeedLink('http://www.example.com/atom', 'atom');
$feed->addAuthor(array(
    'name'  => 'Автор',
    'email' => 'author@example.com',
    'uri'   => 'http://www.example.com',
));
$feed->setDateModified(time());
$feed->addHub('http://pubsubhubbub.appspot.com');

/**
 * Добавляю одну или несколько записей в фид
 */
$entry = $feed->createEntry();
$entry->setTitle('Первое сообщение');
$entry->setLink('http://www.example.com/first-post');
$entry->addAuthor(array(
    'name'  => 'Автор',
    'email' => 'author@example.com',
    'uri'   => 'http://www.example.com',
));
$entry->setDateModified(time());
$entry->setDateCreated(time());
$entry->setDescription('Описание сообщения.');
$entry->setContent('Полный текст сообщения, со всем форматированием которое необходимо.');
$feed->addEntry($entry);

/**
 * Вывод фида в формате Atom 1.0
 * Можно так же выбрать формат RSS 2.0 с помощью параметра "rss"
 */
$out = $feed->export('atom');

Zend_Markup

Компонент для преобразования разных языков форматирования в HTML-вид. На данный момент компонент умеет работать с BBCode и Textile. Он мне очень симпатичен, так как сейчас я использую для парсинга Textile левую библиотеку, которая очень тормозит и криво рендерит.

<?php

$textile = Zend_Markup::factory('Textile');

// <strong>жирный текст</strong> и <em>курсивный текс</em>
echo $textile->render('*жирный текст* и _курсивный текс_');

Zend_Service_LiveDocx

Идея сервиса LiveDocx мне давно понравилась. Смысл в том что есть некий сервис, которому ты отдаешь свой документ с расставленными метками, список данных для этих меток и в каком формате тебе вернуть документ. И все! Ты получаешь документ в формате PDF, DOC, DOCX, RTF, HTML, TXT, либо вообще в картинке, оформленный так, как ты этого хотел. Zend_Service_LiveDocx реализует API для этого сервиса.

<?php

$date = new Zend_Date();
$date->setLocale('ru_RU');

$liveDocx = new Zend_Service_LiveDocx_MailMerge();

$liveDocx->setUsername('myUsername')
         ->setPassword('myPassword');

$liveDocx->setLocalTemplate('template.docx');

$liveDocx->assign('company', 'Сиренити')
         ->assign('date',    $date->get(Zend_Date::DATE_LONG))
         ->assign('time',    $date->get(Zend_Date::TIME_LONG))
         ->assign('city',    'Санкт-Петербург')
         ->assign('country', 'Россия');

$liveDocx->createDocument();

$document = $liveDocx->retrieveDocument('pdf');

file_put_contents('document.pdf', $document);

Эти 4 компонента меня больше всего заинтересовали. Разумеется вышло больше компонентов, вот их список:

  • Zend_Barcode
  • Zend_Cache_Backend_Static
  • Zend_Exception - previous exception support
  • Zend_Feed_Pubsubhubbub
  • Zend_Filter_Compress/Decompress
  • Zend_Filter_Null
  • Zend_Log::factory()
  • Zend_Log_Writer_ZendMonitor
  • Zend_Service_WindowsAzure
  • Zend_Validate_Barcode
  • Zend_Validate_Callback
  • Zend_Validate_CreditCard
  • Zend_Validate_PostCode

Так же хорошо доработали компонент Zend_Tool. Добавили новые провайдеры для создания моделей, шаблонов и форм; добавили возможность конфигурации соединения с базой данных.

Помимо этого вышло небольшое исправление которое мне очень нравится. HTML5 в помощниках вида (view helpers) появился давно, но по сути ни на что не влиял. Вместе с выходом ZF 1.10 кодировку HTML документа можно будет устанавливать правильно.

<?php

// <!DOCTYPE html>
echo $view->doctype('HTML5');

// <meta charset="UTF-8">
echo $view->headMeta()->setCharset('UTF-8');

График выхода версий до релиза 1.10 следующий:

  • 1.9.7: вторник, 5 января 2010
  • 1.10.0beta1: четверг, 7 января 2010, или пятница, 8 января 2010
  • 1.10.0rc1: четверг, 14 января 2010
  • 1.10.0: четверг, 21 января 2010

Скачать и протестировать альфа версию 1.10 можно уже сейчас с сайта Zend Framework.

← Большинство бизнес-процессов на 90%Загрузка файлов с помощью File API, →