TigerZF
🌐Español

Capítulo 33. Zend_Feed

Tabla de contenidos

33.1. Introducción
33.2. Importando Feeds
33.2.1. Feeds personalizados
33.2.1.1. Importando un array personalizado
33.2.1.2. Importando una fuente de datos personalizada
33.2.1.3. Volcando el contenido de un feed
33.3. Obteniendo Feeds desde páginas web
33.4. Consumiendo un Feed RSS
33.5. Consumiendo un Feed Atom
33.6. Consumiendo una única entrada Atom
33.7. Modificando estructuras de Feed y Entry
33.8. Clases personalizadas de Feed y Entry
33.9. Zend_Feed_Reader
33.9.1. Introducción
33.9.2. Importando Feeds
33.9.3. Obteniendo las fuentes subyacentes de Feed y Entry
33.9.4. Soporte de caché y peticiones inteligentes
33.9.4.1. Añadiendo soporte de caché a Zend_Feed_Reader
33.9.4.2. Soporte de HTTP Conditional GET
33.9.5. Localizando URIs de feeds desde sitios web
33.9.6. Colecciones de atributos
33.9.7. Obteniendo información del feed
33.9.8. Obteniendo información de Entry/Item
33.9.9. Extendiendo las APIs de Feed y Entry
33.9.9.1. Escribiendo extensiones de Zend_Feed_Reader
33.10. Zend_Feed_Writer
33.10.1. Introducción
33.10.2. Arquitectura
33.10.3. Primeros pasos
33.10.4. Estableciendo puntos de datos del Feed
33.10.5. Estableciendo puntos de datos de la Entry
33.11. Zend_Feed_Pubsubhubbub
33.11.1. ¿Qué es Pubsubhubbub?
33.11.2. Arquitectura
33.11.3. Zend_Feed_Pubsubhubbub_Publisher
33.11.4. Zend_Feed_Pubsubhubbub_Subscriber
33.11.4.1. Suscribirse y darse de baja
33.11.4.2. Manejo de callbacks del suscriptor
33.11.4.3. Configurando y usando una ruta de URL de callback

33.1. Introducción

Zend_Feed proporciona funcionalidad para consumir feeds RSS y Atom. Proporciona una sintaxis natural para acceder a los elementos de los feeds, atributos de feed, y atributos de entry. Zend_Feed también cuenta con un amplio soporte para modificar la estructura de feed y entry con la misma sintaxis natural, y convertir el resultado de nuevo a XML. En el futuro, este soporte de modificación podría ofrecer soporte para el Atom Publishing Protocol.

Desde el punto de vista de la programación, Zend_Feed consiste en una clase base Zend_Feed, las clases base abstractas Zend_Feed_Abstract y Zend_Feed_Entry_Abstract para representar Feeds y Entries, implementaciones específicas de feeds y entries para RSS y Atom, y un ayudante interno que hace posible la magia de la sintaxis natural.

En el ejemplo de abajo, mostramos un caso de uso sencillo para obtener un feed RSS y guardar las partes relevantes de los datos del feed en un simple array de PHP, que después podría usarse para imprimir los datos, almacenarlos en una base de datos, etc.

[Note] Tenga en cuenta

Muchos feeds RSS tienen diferentes propiedades de canal e item disponibles. La especificación RSS permite muchas propiedades opcionales, así que tenga esto en cuenta al escribir código que trabaje con datos RSS.

Ejemplo 33.1. Poniendo Zend_Feed a trabajar con datos de un feed RSS

// Fetch the latest Slashdot headlines
try {
    $slashdotRss =
        Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import failed
    echo "Exception caught importing feed: {$e->getMessage()}\n";
    exit;
}

// Initialize the channel data array
$channel = array(
    'title'       => $slashdotRss->title(),
    'link'        => $slashdotRss->link(),
    'description' => $slashdotRss->description(),
    'items'       => array()
    );

// Loop over each channel item and store relevant data
foreach ($slashdotRss as $item) {
    $channel['items'][] = array(
        'title'       => $item->title(),
        'link'        => $item->link(),
        'description' => $item->description()
        );
}