Zend Framework

Como usar Twig com Zend Framework 2

Por em

Sobre o que é este tutorial

Continuando na toada de front-end, continuarei falando de uma tecnologia que integrada ao Zend Framework 2 traz uma gama de benefícios imensuráveis, que é o Twig. Se você nunca trabalhou ou ouviu falar dele, clique aqui.

Twig é uma tecnologia baseada no PHP, mas, com uma proposta diferente: modelar os templates da aplicação.

Sabemos que ao construir uma aplicação PHP, teremos arquivos .php, .phtml ou qualquer extensão que seja, com instruções PHP misturadas com as tags HTML, porém, se formos pensar do ponto de vista conceitual de front-end e templates, é algo confuso e de difícil manutenção, porque, o código PHP misturado ao HTML acaba poluindo a legibilidade do código, por todas as questões de sintaxes de uma linguagem voltada para o back-end.

Além de ter uma sintaxe mais amigável e legível aos templates, o Twig traz muitos outros benefícios. Um dos principais para mim é o ganho de desempenho de renderização do código HTML. Mas, aí você se pergunta: embutindo mais uma tecnologia na aplicação que ainda virará um código PHP para depois ser gerado um HTML só pode fazer a aplicação ficar mais lenta, pra quê isso? É desnecessário!

Pois, eu afirmo com certeza que não!

Até já vi em alguns fóruns por aí, especialmente no Google Groups, de pessoas falando que o Twig atrapalha a aplicação. Um dia vi que uma pessoa perguntou qual a importância do Twig, outro falou: apenas usa-lo, então, uma outra pessoa responde: Você está acrescentando mais uma tecnologia na aplicação que vai atrasar o tempo de execução do código, já que do Twig ainda terá que ser gerado um código PHP e depois o HTML, então, é desnecessário, não vale a pena.

Diante do que falei no final do parágrafo acima, é preciso, no mínimo, ler um pouco da documentação da biblioteca, para se ter o mínimo de conhecimento ao se falar sobre alguma coisa… para não sair falando qualquer coisa, é preciso primeiro conhecer… O Twig, internamente, gera classes com código de nossos templates fazendo uma série de otimizações, desde a reduções de espaços desnecessários, redução de código, etc, portanto, teremos um ganho de performance comparado a se não estivéssemos usando o Twig.

Qual é a ideia?

A ideia é usar uma biblioteca de terceiro, chamada ZfcTwig, que faz a integração necessária para usarmos o Twig com Zend Framework 2.

O que faremos?

  1. Instalar e configurar o esqueleto do Zend Framework 2 em nossa máquina.
  2. Instalar e configurar o ZfcTwig.
  3. Criar templates Twig.
  4. Testar o que fizemos. 

Passos

  1. Instalar o esqueleto do Zend Framework 2 em nossa máquina (instalaremos via git).

Veja como instalar o Zend Framework 2

  1. Instalar e configurar o ZfcTwig.

Para instalar o ZfcTwig, abra seu terminal e digite:

composer require zf-commons/zfc-twig

Isto irá instalar a biblioteca. Agora adicione ZfcTwig para o arquivo config/application.config.php na key ‘modules’.

Somente isto já é necessário para o Twig funcionar. Mas ainda podemos fazer duas configurações: uma para permitir o modo debug do Twig em modo desenvolvimento (em nossa máquina) e outra para configurar o cache dos templates para podermos otimizar a aplicação em modo produção.

./config/autoload/local.php
'zfctwig' => [
    'environment_options' => [
       'debug' => true,
    ]
]

Isto irá ativar o modo debug do Twig, para podermos ver os erros posteriores que forem acontecendo no decorrer do desenvolvimento. O local.php foi incluso no git apenas para exemplificar, em desenvolvimento isto não deve acontecer, os arquivos com .local.php devem ser arquivos somente locais.

./config/autoload/global.php
'zfctwig' => [
    'environment_options' => [
       'cache' => __DIR__ . '/../../data/cache/templates',
    ],
]

Isto irá configurar o cache de templates. É necessário que você crie a pasta templates, é nela que o Twig gerará os templates otimizados.

Há muitas outras opções que podem ser configuradas com esta biblioteca, veja aqui, que vão de Extensions, helpers, etc.

  1. Criar templates Twig

Para criar um template Twig, basta criar um arquivo com extensão .twig e coloca-lo na pasta de acordo com o controller/action ou estrutura correspondente.

Neste caso criarei um template index.twig para substituir o index.phtml que já vem na aplicação, e colocarei o seguinte código:

<p>Mostrando um array de números com o Twig</p>
{% set num = [1,2,3,4] %}
{% for n in num %}
    {{ n }} <br/>
{% endfor %}

Agora é só brincar com qualquer código Twig dentro do Zend Framework 2.

  1. Testar o que fizemos

Para testar o que fizemos usaremos o php built-in-server para executar a aplicação no nosso browser. Faça em seu terminal:

php -S localhost:9999 -t public public/index.php

Agora é só abrir seu browser e digitar localhost:9999. Já quando acessarem poderão o resultado do código Twig na tela.

Se você quiser ver o código deste tutorial acesse http://github.com/codeedu/zf2-twig.git

É isso aí pessoal, espero que tenham gostado. Vejam que é simples a configuração do Twig com Zend Framework 2 e que o Twig configurado da maneira correta pode tanto a agilizar o desenvolvimento quanto agilizar a performance da aplicação.

Referências:

http://twig.sensiolabs.org/

http://github.com/ZF-Commons/ZfcTwig