место в рейтинге
  • 212142
  • 2580
  • 153
Нравится блог?
Подписывайтесь!

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 расположена тут

3 ноября 2010, 9:21
1495

Загрузка...

Комментарии

tutuev
0
0
пасиб за новость =)
здесь нет девушек (раздетых и полураздетых), креативных вещей и фоточек стыренных с интернета, фотографий наших крутых фотографов, баянистых приколов с котиками и матами, новостей с маразмом наших чиновников и видео с киви....
фууу как не интересно. ведь мы так привыкли к нашему постоянству на главной!
xlbo
0
0
Не говори, мне аж стыдно. :)
OhShi
0
0
Пост-счётчик количества программистов на юви (:
xlbo
0
0
Точнее показатель разницы между программистами и их хейтерами. :)
xlbo
0
0
Как доехал домой? Кстати, твой ход. :)
xapon
0
0
Доехал ок :)
Согласно разнице дат публикаций этого и предыдущего поста в сообществе, у меня есть по крайней мере пол года на ход. Что-нибудь придумаю :3
))интересно) спасибо

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Я был удивлён, что в Азербайджане есть Казахский район

Я был удивлён, что в Азербайджане есть Казахский район

Мне как казаху по национальности очень хотелось туда попасть. Оказалось, что климат там намного суровей и люди, говорят, суровые и воинственные. Казах – город на западе Азербайджана...
alidimash
18 янв. 2017 / 21:50
  • 30206
  • 18
10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

Названия улиц: Садовый бульвар, Солнечный проезд. Красиво звучит не так ли? Прям, как в Москве... Уютные улочки и радующие глаз одноэтажные домики, тихо и свободно, нет динамики, движух и ажиотажа.
gelberdeuet
16 янв. 2017 / 14:45
  • 8588
  • 98
Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Ожидали ли депутаты Мажилиса всего этого? Как планировали этот процесс регистрации, и обсуждали ли его, прежде чем одним нажатием кнопки принять нормы с такими абсурдными временными рамками?
openqazaqstan
17 янв. 2017 / 14:32
  • 5025
  • 22
Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

В спальных районах, и в высотных домах сквозь стены слышно завывание ветра. В особенности ночью. Такие звуки, я слышала, пожалуй, только по телевизору, в фильмах про метель.
Naomi_K
20 янв. 2017 / 12:36
Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

NoComment (c) Официальный слоган EuroNews. Катастрофа на алматинской утренней трассе началась с того, что водители «Ниссана» и микровена ожидали сигнала светофора на запад по Тимирязева...
ibestreporter
17 янв. 2017 / 22:52
  • 3844
  • 5
Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Эндрю Холл из США считал, что вейпинг безопасен и усиленно убеждал в этом близких. Но как-то раз что-то пошло не так. Это результат взрыва хипстерского устройства - выбило 7 зубов + ожоги и раны...
Maxambet
17 янв. 2017 / 16:28
  • 3868
  • 52
Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Смотря в очередные пустые глаза вчерашнего студента, приходящего устраиваться на первую работу страшно становится. Потому что сравниваю с теми же китайскими студентами, которые готовы выгрызать себе мечту.
mbaitykov
18 янв. 2017 / 11:34
Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Помню, когда я уезжал и Казахстана, тут было довольно прилично, даже не смотря на то, что жить было невыносимо. Но прилично так. Мусора было меньше. Дороги чистили, вони почти не было. Да и в остальном тоже норм.
shootnix
18 янв. 2017 / 12:49
  • 3572
  • 34
Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Тайланд мы впервые посетили в декабре 2012 года. Полученные эмоции настолько были яркими, что в конце 2015 года мы решили еще разок слетать в Тайланд. Вспоминая Тай, первое о чем я думаю - горячий...
zhainar_d
17 янв. 2017 / 11:11
  • 3429
  • 24