Programmer's Reference Guide
| Введение |
Импортирование лент с помощью Zend_Feed
Zend_Feed позволяет легко получать ленты.
Если вам известен URI ленты, то просто используйте метод
Zend_Feed::import():
- $feed = Zend_Feed::import('http://feeds.example.com/feedName');
Еще вы можете использовать Zend_Feed для извлечения содержимого
ленты из файла или строки:
- // импортирование ленты из текстового файла
- $feedFromFile = Zend_Feed::importFile('feed.xml');
- // импортирование ленты из строки
- $feedFromPHP = Zend_Feed::importString($feedString);
В примерах выше в случае успеха возвращается
объект одного из классов, расширяющих Zend_Feed_Abstract, в
зависимости от типа ленты. Если посредством одного из вышеприведенных
методов для импортирования была извлечена лента RSS, то будет возвращен объект
Zend_Feed_Rss. Если же импортируется лента Atom, то
будет возвращен объект Zend_Feed_Atom. Эти методы для импортирования
будут бросать исключение Zend_Feed_Exception в случае ошибки,
такой, как недоступная для чтения или плохо сформированная лента.
Создание собственных лент
Zend_Feed позволяет разработчикам легко создавать
собственные ленты. Вам нужно просто создать массив и импортировать
его в Zend_Feed. Импорт из массива может быть выполнен с помощью
методов Zend_Feed::importArray() или
Zend_Feed::importBuilder(). В последнем методе
массив будет сформирован на лету с помощью специального
источника данных, реализующего интерфейс
Zend_Feed_Builder_Interface.
Импортирование массива
- // Импортирование ленты из массива
- $atomFeedFromArray = Zend_Feed::importArray($array);
- // Следующая строка эквивалентна предыдущей
- // По умолчанию возвращается экземпляр Zend_Feed_Atom
- $atomFeedFromArray = Zend_Feed::importArray($array, 'atom');
- // Импортирование ленты RSS из массива
- $rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
Формат массива должен соответствовать следующей структуре:
- 'title' => 'заголовок ленты', // обязательный
- 'link' => 'канонический URL ленты', // обязательный
- 'lastUpdate' => 'время обновления', // опциональный
- 'published' => 'время публикации', // опциональный
- 'charset' => 'кодировка для текстовых данных', // обязательный
- 'description' => 'краткое описание ленты', // опциональный
- 'author' => 'автор/издатель ленты', // опциональный
- 'email' => 'e-mail автора', // опциональный
- 'webmaster' => // опциональный, игнорируется, если используется Atom
- 'e-mail лица, отвечающего за технические вопросы'
- 'copyright' => 'авторские права', // опциональный
- 'image' => 'URL к изображению', // опциональный
- 'generator' => 'генератор', // опциональный
- 'language' => 'язык, на котором выпускается лента', // опциональный
- 'ttl' => // опциональный, игнорируется, если используется Atom
- 'сколько минут лента может храниться в кэше ' .
- 'до обновления',
- 'rating' => // опциональный, игнорируется, если используется Atom
- 'рейтинг PICS',
- 'domain' => 'домен, пример: rpc.sys.com', // обязательный
- 'port' => 'порт', // опциональный, по умолчанию 80
- 'path' => 'путь, пример: /RPC2', // обязательный
- 'registerProcedure' => 'процедура для вызова, пример: myCloud.rssPleaseNotify', // обязательный
- 'protocol' => 'используемый протокол, например, soap или xml-rpc' // обязательный
- ), // веб-сервис, поддерживающий интерфейс
- // rssCloud, отвечающий за уведомления об изменениях в канале
- // опциональный, игнорируется, если используется Atom
- 'title' => 'надпись для кнопки отправки', // обязательный
- 'description' => 'пояснение к текстовому полю', // обязательный
- 'name' => 'атрибут name для текстового поля', // обязательный
- 'link' => 'URL скрипта, которому будет отправлены данные' // обязательный
- ), // текстовое поле для ввода, которое может отображаться в ленте
- // опциональный, игнорируется, если используется Atom
- 'часы в формате 24'
- // может содержать до 24 элементов, значения которых должны
- // находиться в диапазоне 0..23
- ), // Указывает аггрегатору, в какие часы он может не обновлять канал
- // опциональный, игнорируется, если используется Atom
- 'пропускаемые дни недели'
- // может содержать до 7 элементов, значениями которых должны быть
- // Monday, Tuesday, Wednesday, Thursday, Friday, Saturday или Sunday
- ), // Указывает аггрегатору, в какие дни недели он может не обновлять канал
- // опциональный, игнорируется, если используется Atom
- 'author' => 'автор', // опциональный, по умолчанию используется элемент из channel
- 'name' => 'имя владельца', // опциональный, по умолчанию используется элемент из channel
- 'email' => 'e-mail владельца' // опциональный, по умолчанию используется элемент из channel
- ) // владелец подкаста // опциональный
- 'image' => 'изображение для альбома/подкаста', // опциональный, по умолчанию используется элемент из channel
- 'subtitle' => 'краткое описание', // опциональный, по умолчанию используется элемент из channel
- 'summary' => 'полное описание', // опциональный, по умолчанию используется элемент из channel
- 'block' => 'блокирует показ (yes|no)', // опциональный
- 'sub' => 'подкатегория' // опциональный
- ),
- // до 3-х элементов с парами категория/подкатегория
- ) // 'категории для навигации' // обязательный
- 'explicit' => 'индикатор наличия материалов откровенного содержания (yes|no|clean)', // опциональный
- 'keywords' => 'список из ключевых слов, разделенных запятой (до 12 слов)', // опциональный
- 'new-feed-url' => 'используется для того, чтобы сообщить iTunes о новом URL ленты' // опциональный
- ) // данные для iTunes // опциональный, игнорируется, если используется Atom
- 'title' => 'заголовок сообщения', // обязательный
- 'link' => 'URL сообщения', // обязательный
- 'description' => 'краткое описание', // только текст без HTML, обязательный
- 'guid' => 'идентификатор сообщения, если не передан, то используется URL сообщения', // опциональный
- 'content' => 'содержание сообщения', // может содержать HTML, опциональный
- 'lastUpdate' => 'дата публикации', // опциональный
- 'comments' => 'страница для комментариев к сообщению', // опциональный
- 'commentRss' => 'URL ленты для комментариев, относящихся к сообщению', // опциональный
- 'title' => 'заголовок оригинального источника', // обязательный
- 'url' => 'URL оригинального источника', // обязательный
- ), // оригинальный источник сообщения // опциональный
- 'term' => 'имя категории', // обязательный
- 'scheme' => 'URL ресурса с классификацией' // опциональный
- ),
- // данные второй категории и т.д.
- )
- ), // список прикрепленных категорий // опциональный
- 'url' => 'URL вложения', // обязательный
- 'type' => 'тип MIME вложения', // опциональный
- 'length' => 'размер вложения в октетах' // опциональный
- ),
- // данные для второго вложения и т.д.
- )
- ) // список вложений для сообщения // опциональный
- ),
- // данные второго сообщения и т.д.
- )
- )
- );
Информационные ресурсы:
-
Спецификация RSS 2.0: » RSS 2.0
-
Спецификация Atom: » RFC 4287
-
Спецификация WFW: » Well Formed Web
-
Спецификация iTunes: » Технические спецификации iTunes
Импортирование из специального источника данных
Вы можете создать экземпляр Zeed_Feed из любого источника
данных, реализующего интерфейс
Zend_Feed_Builder_Interface. Вам нужно только
реализовать методы getHeader() и
getEntries() для того, чтобы можно было
использовать свой объект с
Zend_Feed::importBuilder(). Простой пример -
вы можете использовать компоновщик
Zend_Feed_Builder, который принимает массив в
своем конструкторе, выполняет
некоторую проверку и затем может использоваться в методе
importBuilder(). getEntries()
должен возвращать массив экземпляров
Zend_Feed_Builder_Entry.
Замечание:
Zend_Feed_Builderслужит только в качестве конкретной реализации для демонстрации использования. Пользователи должны создавать свои классы, реализующие интерфейсZend_Feed_Builder_Interface.
Ниже приведен пример использования
Zend_Feed::importBuilder():
- // Импортирование ленты из специального созданного ресурса-компоновщика
- $atomFeedFromArray =
- Zend_Feed::importBuilder(new Zend_Feed_Builder($array));
- // Следующая строка эквивалентна предыдущей.
- // По умолчанию возвращается экземпляр Zend_Feed_Atom
- $atomFeedFromArray =
- Zend_Feed::importArray(new Zend_Feed_Builder($array), 'atom');
- // Импортирование RSS-ленты из специально созданного ресурса-компоновщика
- $rssFeedFromArray =
- Zend_Feed::importArray(new Zend_Feed_Builder($array), 'rss');
| Введение |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- Руководство разработчика
- Руководство разработчика
- Zend_Feed
- Введение
- Импортирование лент с помощью Zend_Feed
- Получение лент из веб-страниц
- Работа с лентой RSS
- Работа с лентой Atom
- Работа с отдельным сообщением ленты Atom
- Изменение структуры лент и их сообщений
- Создание собственных классов лент и записей
- Zend_Feed_Reader
