Глава 17. Zend_View
Пред. |  | След.

## Глава 17. Zend_View

## 17.1. Введение

`Zend_View` является классом для работы с частью view (вид) паттерна MVC (model-view-controller). То есть он предназначен для того, чтобы помочь держать скрипты видов отдельно от скриптов модели и контроллера. Он предоставляет систему вспомогательных классов, фильтрации вывода и экранизации переменных.

`Zend_View` является независимым от выбранной системы шаблонов, вы можете использовать PHP как язык шаблонов или создавать экземпляры других шаблонизаторов и работать с ними с помощью ваших скриптов вида.

Использование `Zend_View` заключается главным образом в двух основных шагах: 1. Ваш скрипт контроллера создает экземпляр `Zend_View` и объявляет переменные этого экземпляра. 2. Контроллер приказывает `Zend_View` воспроизвести данный вид, посредством этого производится контроль за скриптом вида, который генерирует выходные данные вида.

### 17.1.1. Скрипт контроллера

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

    <?php
    // использование модели для получения данных для заголовков и авторов книг
    $data = array(
        array(
            'author' => 'Hernando de Soto',
            'title' => 'The Mystery of Capitalism'
        ),
        array(
            'author' => 'Henry Hazlitt',
            'title' => 'Economics in One Lesson'
        ),
        array(
            'author' => 'Milton Friedman',
            'title' => 'Free to Choose'
        )
    );

    // теперь объявляем данные по книгам экземпляру Zend_View
    Zend::loadClass('Zend_View');
    $view = new Zend_View();
    $view->books = $data;

    // и выполняем скрипт вида "booklist.php"
    echo $view->render('booklist.php');
    ?>

### 17.1.2. Скрипт вида

Теперь нам нужен сопутствующий скрипт вида "booklist.php". Это такой же скрипт PHP, как и остальные, за одним исключением: он выполняется в области видимости экземпляра `Zend_View`, это означает, что ссылки на `$this` ссылаются на свойства и методы экземпляра `Zend_View` (переменные, объявляемые контроллером для экземпляра, являются открытыми свойствами экземпляра `Zend_View`). Таким образом, базовый скрипт вида может похожим на этот:

    <?php if ($this->books): ?>

        <!-- Таблица нескольких книг. -->
        <table>
            <tr>
                <th>Author</th>
                <th>Title</th>
            </tr>

            <?php foreach ($this->books as $key => $val): ?>
            <tr>
                <td><?php echo $this->escape($val['author']) ?></td>
                <td><?php echo $this->escape($val['title']) ?></td>
            </tr>
            <?php endforeach; ?>

        </table>

    <?php else: ?>

        <p>Нет книг для отображения.</p>

    <?php endif; ?>

Обратите внимание, что мы используем метод `escape()` для экранизации переменных.

Пред. |  | След.
16.5. Zend_Service_Yahoo | Начало | 17.2. Скрипты контроллера