Pierwsze naprawdę bezpieczne i
intuicyjne szablony dla PHP

Ponad 27% stron internetowych
ma krytyczne luki w zabezpieczeniach

Najczęstszą krytyczną luką w zabezpieczeniach stron internetowych jest Cross-Site Scripting (XSS). Pozwala atakującemu wstrzyknąć złośliwy skrypt na stronę, który następnie jest uruchamiany w przeglądarce niczego nieświadomego użytkownika. Może modyfikować stronę, pozyskiwać poufne informacje, a nawet ukraść tożsamość użytkownika.

Systemy szablonów zawodzą w obronie przed XSS. Latte to jedyny system ze skuteczną obroną, dzięki tzw. kontekstowemu escapowaniu.

Kto chce mieć dobrze zabezpieczoną stronę internetową, używa Latte.

Quiz: Czy potrafisz obronić się przed luką XSS?

Źródło danych: Acunetix Web Vulnerability Report

Przykład automatycznego escapowania zmiennej $text w kilku różnych kontekstach (górny szablon można edytować):

{var $text = "O'Neill"}
- w tekście: <span>{$text}</span>
- w atrybucie: <span title={$text}></span>
- w atrybucie bez cudzysłowów: <span title={$text}></span>
- w JavaScript: <script>var = {$text}</script>
- w tekście: <span>O'Neill</span>
- w atrybucie: <span title='O&apos;Neill'></span>
- w atrybucie bez cudzysłowów: <span title="O&apos;Neill"></span>
- w JavaScript: <script>var = "O'Neill"</script>

Język, który dobrze znasz

Nie przesadzamy. Naprawdę już znasz język Latte. Umiesz już w nim pisać wyrażenia. Pisze się je bowiem dokładnie tak samo jak w PHP. Dzięki temu nie musisz zastanawiać się, jak co napisać w Latte. Nie musisz szukać w dokumentacji. Nie musisz uczyć się kolejnego języka. Po prostu piszesz jak w PHP. Więcej o składni Latte

Pętla

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

Warunek

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

Wyrażenia

{$product?->getDiscount()}

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

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

Latte vs Twig

Latte bazuje na PHP, podczas gdy Twig bazuje na Pythonie. Projektant w Latte nie musi ciągle przełączać się między dwoma różnymi konwencjami. Na przykład między for person in people w szablonach a foreach $people as $person w PHP. Nie musi też myśleć o tym, gdzie użyć {% %}, a gdzie {{ }}, ponieważ Latte ma jeden ogranicznik {...}.

Wypróbuj narzędzie do konwersji szablonów Twig na 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>

Tryb oszczędzania klawiatury, który Cię zachwyci

Użytkownicy uwielbiają tę funkcję. Nazywamy ją n:atrybuty. Każdy tag parzysty, taki jak {if} … {/if}, obejmujący element HTML, można zapisać jako jego atrybut n:if. Dzięki temu uzyskuje się bardzo oszczędny zapis. Atrybuty mogą mieć również prefiks inner- i tag-, wtedy zachowanie dotyczy odpowiednio wnętrza elementu lub otwierającego i zamykającego tagu HTML. Więcej o n-atrybutach

Z użyciem n:atrybutów:

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

To samo bez nich:

{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 rozpieszcza deweloperów

Edycja

Latte ma natywne wsparcie w NetBeans oraz doskonały plugin dla PhpStorm, który podpowiada tagi, filtry i kod PHP.

Debugowanie

Bądź zawsze na bieżąco. Plugin dla Tracy na każdej stronie informuje, które szablony i jakie zmienne są renderowane.

System szablonów nowej generacji

Latte to system szablonów nowej generacji – rozumie język HTML. Tam, gdzie inne systemy widzą tylko stos znaków, Latte widzi elementy HTML. Dlatego ma dwie niesamowite funkcje, takie jak kontekstowe escapowanien:atrybuty.

Jak szablon widzą Blade, Twig i inne systemy

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

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

Jak szablon widzi 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>

Layouty i dziedziczenie

Zaawansowane mechanizmy ponownego użycia i dziedziczenia szablonów zwiększają produktywność, ponieważ każdy szablon zawiera tylko swoją unikalną treść, a powtarzające się elementy i struktury są ponownie wykorzystywane.

Sandbox

Latte ma pancerny bunkier tuż pod maską. Nazywa się go trybem sandbox i izoluje szablony z niezaufanych źródeł, na przykład te edytowane przez samych użytkowników. Zapewnia im ograniczony dostęp do tagów, filtrów, funkcji, metod itp. Jak to działa?

Szybkie jak wiatr

Latte kompiluje szablony w locie do optymalnego kodu PHP. Dzięki temu jest tak samo szybkie, jakbyś pisał czyste PHP. Skompilowany kod jest przejrzysty i można go łatwo debugować. Przy każdej zmianie szablonu jest on oczywiście ponownie kompilowany.

Ponad 18 lat rozwoju

Rozwijamy Latte od ponad 18 lat – i liczba ta wciąż rośnie! Biblioteki, które dostarczamy, są zatem bardzo dojrzałe, stabilne i szeroko stosowane. Zaufało im wiele globalnych korporacji i napędzają one wiele znaczących stron internetowych. Kto używa i ufa Latte?

Doskonała dokumentacja

Latte to jedyny system szablonów, który ma całą dokumentację w języku polskim. Czytelnicy chwalą ją za zrozumiałość i aktualność. Życzymy miłej lektury.

Open source

Latte jest oprogramowaniem typu open source i można go używać całkowicie za darmo.