Setembro 3rd 2007 12:08 am

RSS pra lá de fácil com Zend Framework

O módulo Zend_Feed fornece uma grande abstração e uma sintaxe simples para a manipulação de feeds e entries. Irei demostrar aqui duas formas simples para o uso deste módulo.

Lendo dados de uma url existente

Como classe Zend_Feed_Abstract implementa as interfaces ArrayAccess e Iterator é possivel utiliza-la como um array para ler os entries de uma determinada url, como apresento no exemplo abaixo.

PHP:
  1. <?php
  2. require_once 'Zend/Feed.php';
  3.  
  4. try {
  5.     $oRss = Zend_Feed::import('http://feeds.feedburner.com/TremperBlog');
  6. } catch (Zend_Feed_Exception $e) {
  7.     print "Erro ao importar conteúdo: {$e->getMessage()}\r\n";
  8.     exit;
  9. }
  10.  
  11. print $oRss->title() . "\r\n";
  12. print $oRss->link() . "\r\n";
  13. print $oRss->description() . "\r\n";
  14.  
  15. print "Posts:\r\n\r\n";
  16.  
  17. foreach ($oRss as $item) {
  18.     print "Título: " . $item->title() . "\r\n"
  19.     print "Link: " . $item->link() . "\r\n";
  20.     print "Descrição: " . $item->description() . "\r\n\r\n"
  21. }

Criando um Controller de publicação

O exemplo abaixo mostra como seria para publicar um determinado conteúdo em uma action. Como o objetivo deste post é de apenas apresentar a forma de uso do módulo Zend_Feed, não me preocupei de onde seriam retirados os dados a serem manipulados, assim criei um array "Fake" para ilustrar o uso, os dados poderiam ser retirados de um arquivo texto, banco de dados, etc.

PHP:
  1. <?php
  2. require_once 'Zend/Feed.php';
  3.  
  4. class FeedController extends Zend_Controller_Action {
  5.  
  6.     public function indexAction() {
  7.             //desabilita a busca por templates associados a action
  8.         Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true);
  9.  
  10.         $feedData = array(
  11.               'title'       => 'Tremper\'s Blog',
  12.               'link'        => 'http://feeds.feedburner.com/TremperBlog',
  13.               'description' => 'Feed do blog pessoal de Diego Tremper',
  14.               'charset'     => 'UTF-8',
  15.               'entries'     => array(
  16.                                      array(
  17.                                            'title'        => 'Site prega o bloqueio do Firefox',
  18.                                            'link'         => 'http://blog.diegotremper.com/archives/38',
  19.                                            'description'  => 'O site WhyFirefoxisBlocked.com diz que a extensão Ad Block Plus, para Firefox, vai contra a liberdade de escolha dos proprietários de páginas. O plugin altera a estrutura das páginas, ocultando os comerciais sem o consentimento dos autores.
  20. A iniciativa recomenda que internautas adeptos do navegador da Mozilla Foundation passem a usar o Internet Explorer e o [...]',
  21.                                            ),
  22.                                      array(
  23.                                            'title'        => 'Evento - Capacitação em Teste de Software - Gratuito',
  24.                                            'link'         => 'http://blog.diegotremper.com/archives/37',
  25.                                            'description'  => 'teste de software',
  26.                                            ),
  27.                                      array(
  28.                                            'title'        => 'Hackers conseguem desbloquear o iPhone',
  29.                                            'link'         => 'http://blog.diegotremper.com/archives/35',
  30.                                            'description'  => 'Nem demorou tanto assim: mas a principal ‘limitação’ do iPhone foi quebrada. Um grupo descobriu como desbloquear o ‘übber-fone’ da Apple, deixando-o acessível aos clientes de qualquer operadora GSM do mundo. O método usado precisa de um chip TurboSIM, que custa em torno de US$ 80 nos EUA. Um outro método descoberto no início do [...]',
  31.                                            )
  32.                                      )
  33.                );
  34.  
  35.             $oFeed = Zend_Feed::importArray($feedData, 'rss');
  36.  
  37.         $oResponse = $this->getResponse();
  38.             //seta os cabeçalhos corretos a serem enviados para o browser
  39.         $oResponse->setHeader('Content-Type',
  40.                                'application/xml; charset:'.
  41.                                $oFeed->getDOM()->ownerDocument->actualEncoding);
  42.  
  43.             //conteudo a ser enviado para o browser
  44.         $oResponse->setBody($oFeed->saveXML());
  45.     }
  46. }

Existem outras formas de uso para este módulo, e algumas especificações que valem apena serem revisadas, para quem quiser informações mais detalhadas sobre o uso, recomendo dar uma olhadinha neste link http://framework.zend.com/manual/en/zend.feed.html

Por hoje é só pessoal.

Compartilhe:
  • del.icio.us
  • Google
  • Digg
  • Sphinn
  • Facebook
  • Mixx
  • LinkedIn
  • Live
  • Rec6
  • Technorati
  • TwitThis
1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (Nenhuma avaliação ainda)
Loading ... Loading ...

2 Comments »

2 Responses to “RSS pra lá de fácil com Zend Framework”

  1. links for 2007-09-03 on 03 Set 2007 at 11:26 #

    […] RSS pra lá de fácil com Zend Framework (tags: php) […]

  2. felipe on 12 Set 2007 at 10:32 #

    php é barbada mesmo né.

    adorei a dica.

Trackback URI | Comments RSS

Leave a Reply

« Site prega o bloqueio do Firefox | Palestra sobre qualidade no desenvolvimento de software »