Введение в Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  • 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
  • Ttranslation 27.4% Update 2010-11-28 - Revision 23238 - Version ZF 1.11.x

    32.8. Создание собственных классов лент и записей

    Вы можете наследовать классы Zend_Feed, если хотите обеспечить собственный формат или такие улучшения, как автоматическая обработка элементов, которые должны находиться в специальном пространстве имен.

    Здесь приведен пример специального класса сообщения Atom, который управляет сообщениями в собственным пространстве имен myns:. Обратите внимание, что он автоматически производит вызов registerNamespace(), так что конечным пользователям не нужно будет беспокоиться о пространствах имен.

    Пример 32.7. Расширение класса сообщения Atom с добавлением специальных пространств имен

    /**
     * Специальный класс сообщения знает URI ленты и может автоматически
     * добавлять дополнительные пространства имен
     */
    class MyEntry extends Zend_Feed_Entry_Atom
    {

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

            
    Zend_Feed::registerNamespace('myns''http://www.example.com/myns/1.0');
        }

        public function 
    __get($var)
        {
            switch (
    $var) {
                case 
    'myUpdated':
                    
    // преобразование myUpdated в myns:updated.
                    
    return parent::__get('myns:updated');

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

        public function 
    __set($var$value)
        {
            switch (
    $var) {
                case 
    'myUpdated':
                    
    // преобразование myUpdated в myns:updated.
                    
    parent::__set('myns:updated'$value);
                    break;

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

        public function 
    __call($var$unused)
        {
            switch (
    $var) {
                case 
    'myUpdated':
                    
    // преобразование myUpdated в myns:updated.
                    
    return parent::__call('myns:updated'$unused);

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

    Далее для использования этого класса просто создаете его экземпляр и устанавливаете свойство myUpdated:

    $entry = new MyEntry();
    $entry->myUpdated '2005-04-19T15:30';

    // вызов в виде метода обрабатывается функцией __call
    $entry->myUpdated();
    // вызов в виде свойства обрабатывается функцией __get
    $entry->myUpdated;

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...