Първите наистина сигурни и
интуитивни шаблони за 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>

Лейаути и наследяване

Усъвършенстваните механизми за повторно използване и наследяване на шаблони увеличават вашата производителност, тъй като всеки шаблон съдържа само своето уникално съдържание, а повтарящите се елементи и структури се използват повторно.

Sandbox

Latte има брониран бункер точно под капака. Нарича се sandbox режим и изолира шаблони от ненадеждни източници, които например се редактират от самите потребители. Предоставя им ограничен достъп до тагове, филтри, функции, методи и т.н. Как работи?

Бързо като вятъра

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

Над 18 години развитие

Разработваме Latte повече от 18 години – и броят им продължава да расте! Библиотеките, които предоставяме, са следователно много зрели, стабилни и широко използвани. Доверяват им се редица световни корпорации и много значими уебсайтове разчитат на нас. Кой използва и се доверява на Latte?

Страхотна документация

Читателите хвалят документацията за нейната разбираемост и пълнота. Желаем ви приятно четене.

Отворен код

Latte е с отворен код и можете да го използвате напълно безплатно.