4.8. Classes personnalisées pour les flux et entrées
Précédent | Chapitre 4. Zend_Feed | Suivant

## 4.8. Classes personnalisées pour les flux et entrées

Pour finir, vous pouvez étendre les classes de `Zend_Feed` si vous souhaitez créer votre propre format ou implémenter des gâteries comme par exemple la gestion automatique des éléments situés dans un espace de noms personnalisé.

Voici un exemple d'entrée Atom personnalisée qui gère son propre espace de noms `monen`. Notez aussi que la classe se charge d'appeler la méthode `registerNamespace()` pour que l'utilisateur n'ait au final pas du tout à se soucier des espaces de noms.

Exemple 4.7. Étendre la classe représentant les entrées Atom pour ajouter la gestion d'un espace de noms personnalisé

    <?php

    /**
     * La classe personnalisée connaît automatiquement l'URI du flux (qui est
     * optionnelle) et elle peut ajouter automatiquement des espaces de noms
     * supplémentaires.
     */
    class MonEntree extends Zend_Feed_EntryAtom
    {

        public function __construct($uri = 'http://www.exemple.com/monflux/', $xml = null)
        {
            parent::__construct($uri, $xml);

            Zend_Feed::registerNamespace('monen', 'http://www.exemple.com/monen/1.0');
        }

        public function __get($var)
        {
            switch ($var) {
                case 'monPrenom':
                    // On traduit monPrenom en monen:prenom
                    return parent::__get('monen:prenom');

                default:
                    return parent::__get($var);
                }
        }

        public function __set($var, $valeur)
        {
            switch ($var) {
                case 'monPrenom':
                    // On traduit monPrenom en monen:prenom
                    parent::__set('monen:prenom', $valeur);
                    break;

                default:
                    parent::__set($var, $valeur);
            }
        }

    }

    ?>

Puis pour utiliser cette classe, instanciez-la directement et définissez la propriété `monPrenom` :

    <?php

    $entree = new MonEntree();
    $entree->monPrenom = 'Martin';

    ?>

Précédent | Niveau supérieur | Suivant
4.7. Modifier la structure du flux ou des entrées | Sommaire | Chapitre 5. Zend_Filter