Une petite classe qui lit les newsfeed ( rss/atom )

ViPHP
ViPHP | 5462 Messages

06 oct. 2010, 15:55

avec SimpleXMLIterator, on démarre obligatoirement à php5.1 non ?
tu me pose une colle la, je dirais que c'est arriver en même temps que SPL donc 5.0

si tu remarque bien parseRSS et parseAtom son pareil y'a moyen des les regrouper :wink:

t'es toujours sûr de
filter_var($url, FILTER_VALIDATE_URL,FILTER_FLAG_SCHEME_REQUIRED)
:?: :wink:

Eléphant du PHP | 314 Messages

06 oct. 2010, 16:13

        public function parse()
        {
                if($this->xml_doc==null)
                        $this->fetchFeed();
                       
       
                switch($this->feed_type)
                {
                        case self::FEED_TYPE_RSS:
                        case self::FEED_TYPE_ATOM:
                                return $this->parseRSSATOM();
                        break;
                        default:
                                throw new Exception('Rien à parser');
                }
        }
       
        /* PARSERS */
        protected function parseRSSATOM()
        {
            $retour=array();
            $newsList=null;
            
            if($this->feed_type==self::FEED_TYPE_RSS)
                $newsList=$this->xml_doc->channel->item;
            elseif($this->feed_type==self::FEED_TYPE_ATOM)
                $newsList=$$this->xml_doc->entry;


            foreach($newsList as $item)
            {
                $retour[] = new ArrayObject((array) $item, ArrayObject::ARRAY_AS_PROPS);
            }  
            return $retour;
        } 
j'ai fait le regroupement, et en même temps en faisant de la sorte, je laisse la porte ouverte à de nouveaux type de flux...
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 398 Messages

06 oct. 2010, 17:04

Cette classe m'a l'air fort intéressante. Je la testerai ce soir.
Puis-je l'implémenter dans mon CMS si elle correspond à mes attentes ?
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Eléphant du PHP | 314 Messages

06 oct. 2010, 17:08

Cette classe m'a l'air fort intéressante. Je la testerai ce soir.
Puis-je l'implémenter dans mon CMS si elle correspond à mes attentes ?
Oui elle n'est sous aucune licence, aussi libre que l'air :) Par contre il faut au moins une surcouche car la structure des flux RSS & ATOM sont différents, par exemple pour le contenu en RSS sera accessible par $actu->description alors qu'avec ATOM ce sera par $actu->content.

je vais de ce pas implémenter des getter pour savoir on a a faire à quel type de flux ;)

EDIT: c'est ok ! possibilité de faire

if($news->getType() == NewsFeedReader::FEED_TYPE_RSS)
if($news->getType() == NewsFeedReader::FEED_TYPE_ATOM)
Cordialement,
Julien - http://laravel.fr/

ViPHP
ViPHP | 5462 Messages

06 oct. 2010, 18:35

pour pousser le vice Iterator tu peux faire
$retour = new ArrayIterator();

foreach($newsList as $item)
{
    $retour->append(new ArrayObject((array) $item, ArrayObject::ARRAY_AS_PROPS));
}  
return $retour;
:wink:

Eléphant du PHP | 314 Messages

07 oct. 2010, 09:53

pour pousser le vice Iterator tu peux faire
$retour = new ArrayIterator();

foreach($newsList as $item)
{
    $retour->append(new ArrayObject((array) $item, ArrayObject::ARRAY_AS_PROPS));
}  
return $retour;
:wink:
Salut,

je ne comprend pas bien quelle différence il y a au final avec ce qui est actuellement en place. Pourrais tu éclairer ma lanterne :?:
Cordialement,
Julien - http://laravel.fr/

ViPHP
ViPHP | 5462 Messages

07 oct. 2010, 10:01

la rapidité :wink:
c'est plus rapide de remplir et de parcourir un iterator qu'un array