Os primeiros templates verdadeiramente seguros e
intuitivos para PHP

Mais de 27% dos sites
têm vulnerabilidades críticas

A vulnerabilidade crítica mais comum nos sites é Cross-Site Scripting (XSS). Permite que um atacante insira um script malicioso numa página de terceiros que é executado no navegador de um utilizador desprevenido. Pode modificar a página, obter informações sensíveis ou até mesmo roubar a identidade do utilizador.

Os sistemas de templates falham na defesa contra XSS. Latte é o único sistema com uma defesa eficaz, graças ao chamado escaping sensível ao contexto.

Quem quer ter um site bem seguro usa Latte.

Quiz: consegue defender-se da vulnerabilidade XSS?

Fonte dos dados: Acunetix Web Vulnerability Report

Exemplo de escaping automático da variável $text em vários contextos diferentes (pode editar o template superior):

{var $text = "O'Neill"}
- em texto: <span>{$text}</span>
- em atributo: <span title={$text}></span>
- em atributo sem aspas: <span title={$text}></span>
- em JavaScript: <script>var = {$text}</script>
- em texto: <span>O'Neill</span>
- em atributo: <span title='O&apos;Neill'></span>
- em atributo sem aspas: <span title="O&apos;Neill"></span>
- em JavaScript: <script>var = "O'Neill"</script>

Uma Linguagem que Você Conhece Bem

Não estamos a exagerar. Você já conhece a linguagem Latte. Já sabe como escrever expressões nela. Na verdade, elas são escritas exatamente como em PHP. Portanto, não precisa de pensar em como escrever as coisas em Latte. Não precisa de procurar na documentação. Não precisa de aprender outra linguagem. Você simplesmente escreve como em PHP. Mais sobre a sintaxe Latte

Ciclo

<ul>
    {foreach $users as $user}
        <li>{$user->name}</li>
    {/foreach}
</ul>

Condição

{if $post->status === Status::Published}
    Ler post
{elseif count($posts) > 0}
    Ver outros posts
{/if}

Expressões

{$product?->getDiscount()}

{$foo[0] + strlen($bar[Bar::Const])}

{array_filter($nums, fn($n) => $n < 100)}

Latte vs Twig

Latte é baseado em PHP, enquanto Twig é baseado em Python. Um designer em Latte não precisa de alternar constantemente entre duas convenções diferentes. Por exemplo, entre for person in people nos templates e foreach $people as $person em PHP. Ele nem precisa de pensar sobre onde usar {% %} e onde usar {{ }}, porque Latte tem um delimitador {...}.

Experimente a ferramenta de conversão de templates Twig para Latte.

<ul>
    {foreach $foo->items as $item}
        <li>{$item->name}</li>
    {/foreach}
</ul>
<ul>
    {% for item in foo.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
</ul>

Modo Económico Que o Entusiasmará

Os utilizadores adoram esta funcionalidade. Chamamo-la de n:atributos. Qualquer tag emparelhada, como {if} ... {/if}, envolvendo um elemento HTML, pode ser escrita como seu atributo n:if. Isso resulta numa notação muito eficiente. Os atributos também podem ter os prefixos inner- e tag-, então o comportamento aplica-se ao interior do elemento ou às tags HTML de abertura e fecho, respetivamente. Mais sobre n-atributos

Usando n:atributos:

<ul n:if="count($menu) > 1" class="menu">
    <li n:foreach="$menu as $item">
        <a n:tag-if="$item->href" href={$item->href}>
            {$item->caption}
        </a>
    </li>
</ul>

O mesmo sem eles:

{if count($menu) > 1}
    <ul class="menu">
        {foreach $menu as $item}
            <li>
                {if $item->href}<a href={$item->href}>{/if}
                    {$item->caption}
                {if $item->href}</a>{/if}
            </li>
        {/foreach}
    </ul>
{/if}

Latte Mima os Desenvolvedores

Edição

Latte tem suporte nativo no NetBeans e um excelente plugin para PhpStorm que sugere tags, filtros e código PHP.

Depuração

Mantenha-se atualizado. O plugin para Tracy informa em cada página quais templates e quais variáveis estão a ser renderizadas.

Sistema de Templates da Próxima Geração

Latte é um sistema de templates da próxima geração – ele entende HTML. Onde outros sistemas veem apenas um monte de caracteres, Latte vê elementos HTML. É por isso que ele tem duas características incríveis como escaping sensível ao contexto e n:atributos.

Como Blade, Twig e outros sistemas veem o template

░░░░░░░░░░░░░░░
░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░@yield ('description')░
    ░░░░░░░
    ░░░░░░
        ░░░░░░░░░░░░░░░░░░░░░░░
            @foreach ($navigation as $item)
                ░░░░░░░░░░░░{{$item->link}}░{{$item->title}}░░░░░░░
            @endforeach
        ░░░░░

        ░░░░░░░░
            ░░░░░░░░░░░░{{ $appName }}░
        ░░░░░░░░░
    ░░░░░░░
░░░░░░░

Como Latte vê o template

<!DOCTYPE html>
<html>
    <head>
        <title>It's all about context</title>
        <meta name="description" content={include description}>
    </head>
    <body>
        <ul class="navigation">
            {foreach  $navigation as $item}
                <li><a href={$item->link}>{$item->title}</a></li>
            {/foreach}
        </ul>

        <script>
            var appName = {$appName};
        </script>
    </body>
</html>

Layouts e Herança

Mecanismos sofisticados de reutilização e herança de templates aumentam a sua produtividade, pois cada template contém apenas o seu conteúdo exclusivo, e elementos e estruturas repetidos são reutilizados.

Sandbox

Latte tem um bunker blindado diretamente sob o capô. É chamado de modo sandbox e isola templates de fontes não confiáveis, como aquelas editadas pelos próprios utilizadores. Fornece-lhes acesso limitado a tags, filtros, funções, métodos, etc. Como funciona?

Rápido como o vento

Latte compila templates em tempo de execução para código PHP otimizado. Portanto, é tão rápido quanto se você estivesse a escrever PHP puro. O código compilado é claro e pode depurá-lo facilmente. Claro, ele é recompilado sempre que o template é alterado.

Mais de 18 Anos de Desenvolvimento

Desenvolvemos o Latte há mais de 18 anos – e o número continua a crescer! As bibliotecas que fornecemos são, portanto, muito maduras, estáveis e amplamente utilizadas. São confiáveis por várias corporações globais e alimentam muitos sites importantes. Quem usa e confia no Latte?

Ótima Documentação

A documentação é elogiada pelos leitores pela sua clareza e abrangência. Desejamos-lhe uma leitura agradável.

Código Aberto

Latte é de código aberto e pode usá-lo completamente de graça.