Первые безопасные и
интуитивные шаблоны для PHP

Более 27% сайтов имеют
критические уязвимости

Наиболее распространенной критической уязвимостью сайтов является межсайтовый скриптинг (XSS). Он позволяет злоумышленнику вставить вредоносный скрипт на чужую страницу, который запустится в браузере ничего не подозревающего пользователя. Он может изменять страницу, получать конфиденциальную информацию или даже украсть личность пользователя.

Шаблонные системы не справляются с защитой от XSS. Latte — единственная система с эффективной защитой, благодаря так называемому контекстно-зависимому экранированию.

Кто хочет иметь хорошо защищенный сайт, использует Latte.

Викторина: сможете ли вы защититься от уязвимости XSS?

Источник данных: Acunetix Web Vulnerability Report

Пример автоматического экранирования переменной $text в нескольких различных контекстах (верхний шаблон можно редактировать):

{var $text = "O'Neill"}
- в тексте: <span>{$text}</span>
- в атрибуте: <span title={$text}></span>
- в атрибуте без кавычек: <span title={$text}></span>
- в JavaScript: <script>var = {$text}</script>
- в тексте: <span>O'Neill</span>
- в атрибуте: <span title='O&apos;Neill'></span>
- в атрибуте без кавычек: <span title="O&apos;Neill"></span>
- в JavaScript: <script>var = "O'Neill"</script>

Язык, который вы хорошо знаете

Мы не преувеличиваем. Вы действительно уже знаете язык Latte. Вы уже умеете писать в нем выражения. Ведь они пишутся точно так же, как в PHP. Поэтому вам не нужно думать, как что пишется в Latte. Вам не нужно искать в документации. Вам не нужно учить еще один язык. Вы просто пишете, как в PHP. Подробнее о синтаксисе Latte

Цикл

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

Условие

{if $post->status === Status::Published}
    Read post
{elseif count($posts) > 0}
    See other posts
{/if}

Выражения

{$product?->getDiscount()}

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

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

Latte vs Twig

Latte основан на PHP, в то время как Twig основан на Python. Дизайнеру в Latte не нужно постоянно переключаться между двумя разными конвенциями. Например, между for person in people в шаблонах и foreach $people as $person в PHP. Ему даже не нужно думать, где использовать {% %}, а где {{ }}, потому что у Latte есть один разделитель {...}.

Попробуйте инструмент для конвертации шаблонов Twig в 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>

Экономичный режим, который вас восхитит

Пользователи любят эту функцию. Мы называем ее n:атрибуты. Любой парный тег, например {if} … {/if}, обрамляющий HTML-элемент, можно записать как его атрибут n:if. Это позволяет добиться очень экономичной записи. Атрибуты могут также иметь префиксы inner- и tag-, тогда поведение применяется к содержимому элемента или к открывающему и закрывающему HTML-тегам соответственно. Подробнее о n-атрибутах

С использованием n:атрибутов:

<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>

То же самое без них:

{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 балует разработчиков

Редактирование

Latte имеет нативную поддержку в NetBeans и превосходный плагин для PhpStorm, который подсказывает теги, фильтры и PHP-код.

Отладка

Будьте всегда в курсе. Плагин для Tracy на каждой странице сообщает, какие шаблоны и какие переменные отрисовываются.

Шаблонная система нового поколения

Latte — это шаблонная система нового поколения — она понимает язык HTML. Там, где другие системы видят лишь кучу символов, Latte видит HTML-элементы. Поэтому у нее есть две потрясающие функции, такие как контекстное экранирование и n:атрибуты.

Как шаблон видят Blade, Twig и другие системы

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

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

Как шаблон видит Latte

<!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>

Макеты и наследование

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

Песочница (Sandbox)

У Latte есть бронированный бункер прямо под капотом. Он называется режимом песочницы и изолирует шаблоны из ненадежных источников, которые, например, редактируют сами пользователи. Он предоставляет им ограниченный доступ к тегам, фильтрам, функциям, методам и т. д. Как это работает?

Быстрый как ветер

Latte компилирует шаблоны в оптимальный PHP-код во время выполнения. Так что он такой же быстрый, как если бы вы писали чистый PHP. Скомпилированный код понятен и его легко отлаживать. При каждом изменении шаблона он, конечно, перекомпилируется заново.

Более 18 лет разработки

Мы разрабатываем Latte более 18 лет — и это число продолжает расти! Библиотеки, которые мы предоставляем, поэтому очень зрелые, стабильные и широко используемые. Им доверяют ряд глобальных корпораций, и на них работают многие крупные веб-сайты. Кто использует и доверяет Latte?

Отличная документация

Latte — единственная шаблонная система, у которой вся документация на чешском языке. Читатели хвалят ее за понятность и актуальность. Желаем приятного чтения.

Open source

Latte является open source, и вы можете использовать его совершенно бесплатно.