Естетственный синтаксис Zend_Feed
используется для создания
и изменения лент и записей так же, как и для их чтения. Вы можете легко преобразовывать
свои новые или измененные объекты обратно в валидный XML для сохранения в файл
или отправки серверу.
Пример 12.5. Изменение существующей публикации в ленте
<?php $feed = new Zend_Feed_Atom('http://atom.example.com/feed/1'); $entry = $feed->current(); $entry->title = 'This is a new title'; $entry->author->email = 'my_email@example.com'; echo $entry->saveXML(); ?>
Это выведет полное (включая вступление <?xml ... >
) XML-представление
новой публикации, включая необходимые пространства имен XML.
Обратите внимание на то, что вышеприведенный код будет работать, даже если
существующая запись не имеет тег <author>
. Для присвоения вы
можете использовать столько уровней доступа через ->
, сколько
для получения; все промежуточные уровни будут созданы автоматически, если необходимо.
Если вы хотите использовать в своих записях пространство имен, отличное от
atom:
, rss:
, or osrss:
, то вам нужно зарегистрировать
его через Zend_Feed
, используя Zend_Feed::registerNamespace()
.
Когда вы изменяете существующий элемент, он всегда будет сохранять
свое исходное пространство имен. Когда добавляете новый элемент, он будет включен в
пространство имен по умолчанию, если вы не укажете явно другое пространство имен.
Пример 12.6. Создание публикации Atom с элементами в специальном пространстве имен
<?php $entry = new Zend_Feed_Entry_Atom(); // id уже присвоен сервером $entry->title = 'my custom entry'; $entry->author->name = 'Example Author'; $entry->author->email = 'me@example.com'; // теперь выполнение специальной части Zend_Feed::registerNamespace('myns', 'http://www.example.com/myns/1.0'); $entry->{'myns:myelement_one'} = 'my first custom value'; $entry->{'myns:container_elt'}->part1 = 'first nested custom part'; $entry->{'myns:container_elt'}->part2 = 'second nested custom part'; echo $entry->saveXML(); ?>