Índice
Zend_View é uma classe para trabalhar com a parte de visualização do padrão de projeto MVC. Basicamente ela existe para separar o script de visualização dos controladores e modelos. Ela fornece um sistema de assistentes, filtros de saída e escape de variáveis.
Zend_View é um sistema de template agnóstico; você pode usar o PHP como sua linguagem de template, ou criar instâncias de outros sistemas de template e manipulá-las dentro do seu script de visualização.
Essencialmente, o funcionamento do Zend_View acontece em duas etapas principais: 1. Seu script controlador cria uma instância de Zend_View, atribuindo-lhe variáveis. 2. O controlador instrui o Zend_View a rederizar uma determinada visualização , passando o controle ao script de visualização, responsável pela geração da saída a ser visualizada.
Neste exemplo simples, suponhamos que seu controlador tenha uma listagem contendo dados sobre livros, que queremos renderizar para uma visualização. O controlador poderia ser algo como isto:
<?php
// use um modelo para obter dados sobre autores e títulos dos livros.
$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'
)
);
// atribua os dados à instância de Zend_View
Zend_Loader::loadClass('Zend_View');
$view = new Zend_View();
$view->books = $data;
// renderize uma visualização chamada "booklist.php"
echo $view->render('booklist.php');
?>
Agora necessitaremos do script de visualização associado, "booklist.php". Trata-se de um script PHP como qualquer outro, com uma exceção: ele executa dentro do escopo da instância de Zend_View instance, o que implica que as referências a $this apontam para as propriedades e métodos da instância Zend_View. (Variáveis atribuídas à instância pelo controlador são propriedades públicas da instância de Zend_View.) Deste modo, um script de visualição muito básico poderia se parecer com isto:
<?php if ($this->books): ?>
<!-- Uma tabela contendo alguns livros. -->
<table>
<tr>
<th>Autor</th>
<th>Título</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>Não existem livros a serem exibidos.</p>
<?php endif; ?>
Observe a forma como empregamos o método "escape()" para escapar o conteúdo das variáveis para a saída.