Перші безпечні та інтуїтивно зрозумілі шаблони для 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'Ніл</span>
- в атрибуті <span title='O&apos;Neill'></span>
- в атрибуті без лапок: <span title="O&apos;Neill"></span>
- в JavaScript: <script>var = "O'Neill"</script>

Мова, яку ти добре знаєш

Ми не жартуємо, ви вже знаєте мову Latte. Ви вже знаєте, як писати вирази на ній. Насправді, вони пишуться точно так само, як і в PHP. Тому вам не потрібно думати про те, як писати речі на Latte. Вам не потрібно заглядати в документацію. Вам не потрібно вчити іншу мову. Ви просто пишете як на PHP. “Більше про синтаксис Latte .[more-about]:/uk/syntax”

Цикл

<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 to Latte tool:/uk/cookbook/migration-from-twig”.

<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:attributes. Будь-які парні теги, такі як {if} ... {/if} {if} ... {/if} {if} ... {/if} можуть бути записані як його n:if. Це дуже ефективний спосіб запису. Атрибути також можуть мати префікси inner- і tag-, тоді поведінка застосовується до внутрішньої частини елемента відповідно до початкового і кінцевого тегів HTML. “Більше про n-атрибути .[more-about]:/uk/syntax#toc-n-atributy”

Використання n:attributes:

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

Редагування

Latte має вбудовану підтримку в NetBeans і чудовий "плагін для PhpStorm:https://plugins.jetbrains.com/…n/7457-latte ", який пропонує теги, фільтри і PHP-код.

Налагодження

Залишайтеся на зв'язку. Плагін для Трейсі інформує вас на кожній сторінці про те, які шаблони і які змінні рендерингуються.

Шаблони наступного покоління

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. Скомпільований PHP-код зрозумілий і простий у налагодженні. Шаблон автоматично перекомпілюється щоразу, коли ми змінюємо вихідний файл.

Більше 15 років

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

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

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

Відкритий вихідний код

Latte має відкритий вихідний код і є повністю безкоштовним для використання.