Что интересного нас ожидает в 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.