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
-
require_once 'Zend/Feed.php';
-
-
try {
-
$oRss = Zend_Feed::import('http://feeds.feedburner.com/TremperBlog');
-
} catch (Zend_Feed_Exception $e) {
-
print "Erro ao importar conteúdo: {$e->getMessage()}\r\n";
-
exit;
-
}
-
-
print $oRss->title() . "\r\n";
-
print $oRss->link() . "\r\n";
-
print $oRss->description() . "\r\n";
-
-
print "Posts:\r\n\r\n";
-
-
foreach ($oRss as $item) {
-
print "Título: " . $item->title() . "\r\n"
-
print "Link: " . $item->link() . "\r\n";
-
print "Descrição: " . $item->description() . "\r\n\r\n"
-
}
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
-
require_once 'Zend/Feed.php';
-
-
class FeedController extends Zend_Controller_Action {
-
-
public function indexAction() {
-
//desabilita a busca por templates associados a action
-
Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true);
-
-
$feedData = array(
-
'title' => 'Tremper\'s Blog',
-
'link' => 'http://feeds.feedburner.com/TremperBlog',
-
'description' => 'Feed do blog pessoal de Diego Tremper',
-
'charset' => 'UTF-8',
-
'entries' => array(
-
array(
-
'title' => 'Site prega o bloqueio do Firefox',
-
'link' => 'http://blog.diegotremper.com/archives/38',
-
'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.
-
A iniciativa recomenda que internautas adeptos do navegador da Mozilla Foundation passem a usar o Internet Explorer e o [...]',
-
),
-
array(
-
'title' => 'Evento - Capacitação em Teste de Software - Gratuito',
-
'link' => 'http://blog.diegotremper.com/archives/37',
-
'description' => 'teste de software',
-
),
-
array(
-
'title' => 'Hackers conseguem desbloquear o iPhone',
-
'link' => 'http://blog.diegotremper.com/archives/35',
-
'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 [...]',
-
)
-
)
-
);
-
-
$oFeed = Zend_Feed::importArray($feedData, 'rss');
-
-
$oResponse = $this->getResponse();
-
//seta os cabeçalhos corretos a serem enviados para o browser
-
$oResponse->setHeader('Content-Type',
-
'application/xml; charset:'.
-
$oFeed->getDOM()->ownerDocument->actualEncoding);
-
-
//conteudo a ser enviado para o browser
-
$oResponse->setBody($oFeed->saveXML());
-
}
-
}
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.
2 Comments »














links for 2007-09-03 on 03 Set 2007 at 11:26 #
[…] RSS pra lá de fácil com Zend Framework (tags: php) […]
felipe on 12 Set 2007 at 10:32 #
php é barbada mesmo né.
adorei a dica.