2 ноября, состоялся релиз Zend Framework 1.11.0. Это последняя ветка 1.хх перед выходом версии 2.0.
Zend Framework считаю одним из лучших PHP-фреймворков, с появлением второй версии и решением в ней проблем производительности, думаю что ZF станет безусловным лидером.
До этого события остаются считанные месяцы, а пока можно ознакомится с нововведениями версии 1.11.
Функционал заметно расширился, но в этом посте я расскажу о добавлении поддержки сервисов сокращения ссылок. За это отвечает компонент Zend_Service_ShortUrl. На базе него реализовано сокращение через сервисы http://jdem.cz and http://tinyurl.com.
Для тех, кто хочет поддержать отечественного производителя, я быстро набросал небольшой класс, для работы с сервисом 3cm.kz.
Он состоит из двух функций shorten и unshorten, которые соответственно сокращают и показывают оригинальную ссылку.
Выкладываю исходник тут и на сервис pastebin.
Исходники на pastebin: http://pastebin.com/AHPUzFjp
<?php class App_3cm extends Zend_Service_ShortUrl_AbstractShortener { /** * Base URI of the service * * @var string */ protected $_baseUri = 'http://3cm.kz'; /** * Эта функция сокращает URL * * @param string $url URL to Shorten * @throws Zend_Service_ShortUrl_Exception When URL is not valid * @return string New URL */ public function shorten($url) { //проверка на вшивость $this->_validateUri($url); //ссылка на наш замечательный сервис $serviceUri = 'http://3cm.kz'; //формируем запрос $this->getHttpClient()->setUri($serviceUri); $this->getHttpClient()->request("POST"); $this->getHttpClient()->setParameterPost('url', $url); $response = $this->getHttpClient()->request(); require_once 'Zend/Dom/Query.php'; $dom = new Zend_Dom_Query($response->getBody()); //ищем короткую ссылку $results = $dom->query('input#input_url'); $shortenedUrl = $results->current()->getAttribute('value'); return $shortenedUrl; } /** * Эта функция показывает оригинальный URL * * @param string $shortenedUrl URL to reveal target of * @throws Zend_Service_ShortUrl_Exception When URL is not valid or is not shortened by this service * @return string */ public function unshorten($shortenedUrl) { //проверка на вшивость $this->_validateUri($shortenedUrl); $this->_verifyBaseUri($shortenedUrl); //ссылка на наш замечательный сервис $serviceUri = 'http://3cm.kz'; //формируем запрос $this->getHttpClient()->setUri($serviceUri); $this->getHttpClient()->request("POST"); $this->getHttpClient()->setParameterPost('url', $shortenedUrl); $response = $this->getHttpClient()->request(); require_once 'Zend/Dom/Query.php'; $dom = new Zend_Dom_Query($response->getBody()); //ищем ссылку $results = $dom->query('#content a'); //получаем оригинальную ссылку $originalUrl = $results->current()->getAttribute('href'); return $originalUrl; } } ?>
Полная версия поста о новой версии Zend Framework 1.11 расположена тут