Introduction au Zend Framework

 Apprendre Zend Framework

appendix

 Guide de référence Zend Framework


  •  Zend_Gdata
  •  Zend_Http
  •  Zend_InfoCard
  •  Zend_Json
  •  Zend_Layout
  •  Zend_Ldap
  •  Zend_Loader
  •  Zend_Locale
  •  Zend_Log
  •  Zend_Mail
  •  Zend_Markup
  •  Zend_Measure
  •  Zend_Memory
  •  Zend_Mime
  •  Zend_Navigation
  •  Zend_Oauth
  •  Zend_OpenId
  •  Zend_Paginator
  •  Zend_Pdf
  •  Zend_ProgressBar
  •  Zend_Queue
  •  Zend_Reflection
  •  Zend_Registry
  •  Zend_Rest

  •  Zend_Search_Lucene
  •  Zend_Serializer
  •  Zend_Server
  •  Zend_Service
  •  Zend_Session
  •  Zend_Soap
  •  Zend_Tag
  •  Zend_Test
  •  Zend_Text
  •  Zend_TimeSync
  •  Zend_Tool
  •  Zend_Tool_Framework
  •  Zend_Tool_Project
  •  Zend_Translate
  •  Zend_Uri
  •  Zend_Validate
  •  Zend_Version
  •  Zend_View
  •  Zend_Wildfire
  •  Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Translation 61.2% Update 2010-11-28 - Revision 23149 - Version ZF 1.11.x

    32.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 améliorations 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 32.7.  Étendre la classe représentant les entrées Atom pour ajouter la gestion d'un espace de noms personnalisé

    /**
     * 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_Entry_Atom
    {

        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 
    'maMiseAJour':
                    
    // On traduit maMiseAJour en monen:maj
                    
    return parent::__get('monen:maj');

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

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

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

        public function 
    __call($var$unused)
        {
            switch (
    $var) {
                case 
    'maMiseAJour':
                    
    // On traduit maMiseAJour en monen:maMiseAJour.
                    
    return parent::__call('monen:maMiseAJour'$unused);

                default:
                    return 
    parent::__call($var$unused);
            }
        }
    }

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

    $entree = new MonEntree();
    $entree->maMiseAJour '2005-04-19T15:30';

    // appel de type méthode géré par __call
    $entree->maMiseAJour();

    // appel de type propriété géré par __get
    $entree->maMiseAJour;

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...