Yvision.kzYvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
21:21, 02 ноября 2010

Zend Framework 1.11.0 и сокращение ссылок

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

 

  1. <?php
  2. class App_3cm extends Zend_Service_ShortUrl_AbstractShortener
  3. {
  4. /**
  5.   * Base URI of the service
  6.   *
  7.   * @var string
  8.   */
  9. protected $_baseUri = 'http://3cm.kz';
  10.  
  11. /**
  12.   * Эта функция сокращает URL
  13.   *
  14.   * @param string $url URL to Shorten
  15.   * @throws Zend_Service_ShortUrl_Exception When URL is not valid
  16.   * @return string New URL
  17.   */
  18. public function shorten($url)
  19. {
  20. //проверка на вшивость
  21. $this->_validateUri($url);
  22.  
  23. //ссылка на наш замечательный сервис
  24. $serviceUri = 'http://3cm.kz';
  25.  
  26. //формируем запрос
  27. $this->getHttpClient()->setUri($serviceUri);
  28. $this->getHttpClient()->request("POST");
  29. $this->getHttpClient()->setParameterPost('url', $url);
  30.  
  31. $response = $this->getHttpClient()->request();
  32.  
  33. require_once 'Zend/Dom/Query.php';
  34. $dom = new Zend_Dom_Query($response->getBody());
  35.  
  36. //ищем короткую ссылку
  37. $results = $dom->query('input#input_url');
  38. $shortenedUrl = $results->current()->getAttribute('value');
  39.  
  40. return $shortenedUrl;
  41. }
  42. /**
  43.   * Эта функция показывает оригинальный URL
  44.   *
  45.   * @param string $shortenedUrl URL to reveal target of
  46.   * @throws Zend_Service_ShortUrl_Exception When URL is not valid or is not shortened by this service
  47.   * @return string
  48.   */
  49. public function unshorten($shortenedUrl)
  50. {
  51. //проверка на вшивость
  52. $this->_validateUri($shortenedUrl);
  53. $this->_verifyBaseUri($shortenedUrl);
  54.  
  55. //ссылка на наш замечательный сервис
  56. $serviceUri = 'http://3cm.kz';
  57.  
  58. //формируем запрос
  59. $this->getHttpClient()->setUri($serviceUri);
  60. $this->getHttpClient()->request("POST");
  61. $this->getHttpClient()->setParameterPost('url', $shortenedUrl);
  62.  
  63. $response = $this->getHttpClient()->request();
  64.  
  65. require_once 'Zend/Dom/Query.php';
  66. $dom = new Zend_Dom_Query($response->getBody());
  67.  
  68. //ищем ссылку
  69. $results = $dom->query('#content a');
  70.  
  71. //получаем оригинальную ссылку
  72. $originalUrl = $results->current()->getAttribute('href');
  73.  
  74. return $originalUrl;
  75. }
  76. }
  77. ?>

 

Полная версия поста о новой версии Zend Framework 1.11 расположена тут

0