10.7. Изменение структуры лент и публикаций
Пред. | Глава 10. Zend_Feed | След.

## 10.7. Изменение структуры лент и публикаций

Естетственный синтаксис `Zend_Feed` используется для создания и изменения лент и записей так же, как и для их чтения. Вы можете легко преобразовывать свои новые или измененные объекты обратно в валидный XML для сохранения в файл или отправки серверу.

Пример 10.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()`. Когда вы изменяете существующий элемент, он всегда будет сохранять свое исходное пространство имен. Когда добавляете новый элемент, он будет включен в пространство имен по умолчанию, если вы не укажете явно другое пространство имен.

Пример 10.6. Создание публикации Atom с элементами в специальном пространстве имен

    <?php

    $entry = new Zend_Feed_EntryAtom();
    // 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();

    ?>

Пред. | Уровень выше | След.
10.6. Работа с отдельной публикацией Atom | Начало | 10.8. Специальные классы лент и записей