Zend Framework e Smarty (Introdução e Configuração)

O PHP como todos sabem é uma linguagem poderosa, capaz de fazer sites imagináveis, porém muitas vezes por solicitação do cliente é necessário alterar algum script da página, nisso leva tempo, pois tem sempre que ficar tomando cuidado com o layout do site.

Por | @oficinadanet Programação
O PHP como todos sabem é uma linguagem poderosa, capaz de fazer sites imagináveis, porém muitas vezes por solicitação do cliente é necessário alterar algum script da página, nisso leva tempo, pois tem sempre que ficar tomando cuidado com o layout do site.

Outra coisa é o desenvolvimento de um site através de uma equipe, programadores, designer...
Sempre tem que esperar um para o outro fazer a sua parte, exemplo o programador quer inserir o seu script mais não pode porque o css da página ainda não esta feita e assim vai. Isso não aconteceria se tivesse usando o Zend Framework e o Smarty.

O Zend Framework usa a arquitetura Model-View Controller (MVC). Isto é usado para separar as diferentes partes de sua aplicação para tornar o desenvolvimento e manutenção mais fácil.

O Smarty é um sistema de templates para PHP, Mais especificamente, ele fornece uma maneira fácil de conrolar a  separação da aplicação lógica e o conteúdo de sua apresentação. Isto é melhor descrito em uma situação onde o programador da aplicação e o designer do template executam diferentes funções, ou na maiores dos casos não são a mesma pessoa.

Significado da sigla MVC


Model A parte de modelo de uma aplicação é a parte que se preocupa com os dados específicos a serem mostrados. No código de exemplo acima, é o conceito de “news”. Dessa forma, model é geralmente relacionado com a lógica de negócios de uma aplicação e administra o carregamento e o salvamento de dados em um banco de dados.

View A view consiste em uma pequena parte da aplicação que é responsável em mostrar a informação ao usuário. Normalmente, é o HTML.Controller O controller amarra o view e o model para garantir que as informaçõescorretas sejam mostradas na página. Um outra coisa que o Zend Framework também faz é gerar URL amigável.

Exemplo:
http://www.exemplo.com.br/pagina.php?id=54?cod=655

Com o Zend Framework
http://www.exemplo.com.br/id/54/cod/655

Apesar de que o Zend Framework não designa uma estrutura de diretório, usaremos o padrão que é da seguinte maneira.
Zend Framework e Smarty (Introdução e Configuração)

Como pode se visto, criamos os diretórios separados para os arquivos do model, view e controller dentro do diretório application. Dentro do diretório common ficará nos arquivos de Imagens, CSS e JavaScrip. No diretório lib ficarão nossas bibliotecas.

Baixe o Zend Framework pelo site http://framework.zend.com/download

Ao baixa, descompacte e copie a pasta Zend que esta dentro do diretório ‘library’ para dentro do nosso diretório ‘lib’.

Baixe o Smarty pelo site http://www.smarty.net/download.php

Dentro do diretório ‘library’ crie uma pasta chamada Smarty, descompacte o arquivo baixado, copie todos os arquivos da pasta ‘libs’ para dentro da pasta Smarty criada.

Veja como esta os nossos diretórios.
Zend Framework e Smarty (Introdução e Configuração)

Podemos reparar que dentro da pasta lib possui um arquivo chamado Smarty.php, esse arquivo estaremos criando para integrar o Zend Framework com o Smarty.

Arquivo Smarty.php


//Requer a class do Smarty
require_once 'Smarty/Smarty.class.php';

class View_Smarty extends Zend_View_Abstract
{
    private $_smarty;

    public function __construct($data = array())
    {
        parent::__construct($data);

        $this->_smarty = new Smarty();

        $this->_smarty->debugging = false;
        $this->_smarty->force_compile = true;
        $this->_smarty->compile_check = true;
        $this->_smarty->caching = false;
        $this->_smarty->cache_lifetime = -1;

        $path = getcwd();
        $path = str_replace("\", "/", $path);
        $path .= "/";
        $this->_smarty->template_dir = $path.'application/views/';
        $this->_smarty->compile_dir = $path.'application/views_c/';
    }

    /**
     * O método run é o único que precisa
     * ser implementado em qualquer
     * subclasse de Zend_View_Abstract.
     * É chamado automaticamente de
     * dentro do método render.
     * A implementação abaixo,
     * publicada por Ralf Eggert no
     * site da Zend, usa o método display
     * do Smarty para gerar e imprimir o
     * template.
     * @return void
     */
    protected function _run($template='index.tpl')
    {
        $this->_smarty->display($template);
    }

    /**
     * O método assign do Smarty funciona
     * de maneira similar ao de Zend_View.
     * A grande diferença é que os valores
     * são associados para o objeto Smarty
     * e não para o array $this->_vars de
     * Zend_View_Abstract.
     * @return void
     */
    public function assign($spec,$value = NULL)
    {
        if (is_string($spec))
        {
            $this->_smarty->assign($spec, $value);
        }
        elseif (is_array($spec))
        {
            foreach ($spec as $key => $value)
            {
                $this->_smarty->assign($key, $value);
            }
        }
        else
        {
            throw new Zend_View_Exception('assign() expects a string or array, got '.gettype($var));
        }
    }

    /**
     * O método escape do Smarty
     * trabalha tanto para strings
     * quanto para arrays de valores
     * e também usa o método escape
     * de Zend_View_Abstract. A
     * vantagem disso é que você não
     * tem de tomar cuidado para cada
     * valor de um array ser tratado
     * apropriadamente.
     * @return string
     */
    public function escape($var)
    {
        if (is_string($var))
        {
            return parent::escape($var);
        }
        elseif (is_array($var))
        {
            foreach ($var as $key => $val)
            {
                $var[$key] = $this->escape($val);
            }

            return $var;
        }
        else
        {
            return $var;
        }
    }

    /**
     * @return void
     */
    public function display($name)
    {
        $this->_smarty->display($this->_smarty->template_dir.$name);
        exit;
    }

}
?>

Espero que tenha gostado, pois esse tutorial será essencial para continuarmos a conhecer mais sobre essa duas aplicações.

Abaixo tem o esqueleto que acabamos de montar disponível para download.

Mais sobre: php zend smarty
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo