Перші справді безпечні та
інтуїтивно зрозумілі шаблони для PHP

Понад 27% веб-сайтів мають
критичні вразливості

Найпоширенішою критичною вразливістю веб-сайтів є Cross-Site Scripting (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 проти 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>

Макети та успадкування

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

Пісочниця

Latte має броньований бункер прямо під капотом. Він називається режимом пісочниці та ізолює шаблони з ненадійних джерел, які, наприклад, редагують самі користувачі. Він надає їм обмежений доступ до тегів, фільтрів, функцій, методів тощо. Як це працює?

Швидкий як вітер

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

Понад 18 років розробки

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

Чудова документація

Latte — це система шаблонів з повною документацією українською мовою. Читачі хвалять її за зрозумілість та актуальність. Бажаємо приємного читання.

Відкритий код

Latte — це проект з відкритим кодом, і ви можете використовувати його абсолютно безкоштовно.