Prvi resnično varen in
intuitivne predloge za PHP

Več kot 27 % spletnih strani
ima kritične ranljivosti

Najpogostejša kritična ranljivost v spletnih mestih je križno skriptiranje (Cross-Site Scripting, XSS). Napadalcu omogoča, da na stran vstavi zlonamerno skripto, ki se izvede v brskalniku nič hudega slutečega uporabnika. Tako lahko spremeni stran, pridobi občutljive podatke ali celo ukrade uporabnikovo identiteto.

Sistemi za oblikovanje predlog se ne morejo zaščititi pred XSS. Latte je edini sistem z učinkovito obrambo zaradi kontekstno občutljivega pobega.

Vsak, ki želi dobro zaščiteno spletno mesto, uporablja Latte.

Kviz: Ali se lahko zaščitite pred ranljivostjo XSS?

Vir: Acunetix Web Vulnerability Report

Primer samodejnega eskapiranja spremenljivke $text v več različnih kontekstih (urejate lahko zgornjo predlogo):

{var $text = "O'Neill"}
- v besedilu: <span>{$text}</span>
- v atributu: <span title={$text}></span>
- v neocitiranem atributu: <span title={$text}></span>
- v javascriptu: <script>var = {$text}</script>
- v besedilu: <span>O'Neill</span>
- v atributu: <span title='O&apos;Neill'></span>
- v neocitiranem atributu: <span title="O&apos;Neill"></span>
- v javascriptu: <script>var = "O'Neill"</script>

Jezik, ki ga dobro poznaš

Ne šalimo se, jezik Latte že poznate. V njem že znate pisati izraze. Pravzaprav so zapisani popolnoma enako kot v jeziku PHP. Zato vam ni treba razmišljati o tem, kako zapisati stvari v jeziku Latte. Ni vam treba iskati v dokumentaciji. Ni se vam treba učiti drugega jezika. Preprosto pišete tako kot v PHP. Več o sintaksi Latte

Zanka

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

Pogoj

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

Izrazi

{$product?->getDiscount()}

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

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

Latte proti vejici

Latte temelji na PHP, Twig pa na Pythonu. Oblikovalcu v Latteju ni treba nenehno preklapljati med dvema različnima konvencijama. Na primer med for person in people predlogah in foreach $people as $person v PHP. Niti mu ni treba razmišljati, kje uporabiti {% %} in kje {{ }}, saj ima Latte en sam ločilnik {...}.

Preizkusite orodje Twig to Latte tool.

<ul>
    {foreach $foo->items as $item}
        <li>{$item->name}</li>
    {/foreach}
</ul>
<ul>
    {% for item in foo.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
</ul>

Način varčevanja s tipkovnico, ki vas navduši

Uporabnikom je ta funkcija všeč. Imenujemo jo n:atributi. Vse parne oznake, kot so {if} ... {/if}.. {if} ... {/if} ovijajo element HTML, lahko zapišemo kot njegov atribut n:if. To omogoča zelo učinkovit zapis. Atributi imajo lahko tudi predponi inner- in tag-, potem se obnašanje nanaša na notranjost elementa oziroma na začetno in končno oznako HTML. Več o n-atributih

Uporaba n:atributov:

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

In enako brez njih:

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

Urejanje spletne strani

Latte ima izvirno podporo v NetBeans in odličen vtičnik za PhpStorm, ki predlaga oznake, filtre in kodo PHP.

Razhroščevanje

Ostanite v stiku. Vtičnik za Tracy vas na vsaki strani obvesti, katere predloge in katere spremenljivke se prikažejo.

Predloge naslednje generacije

Latte je šablonski sistem naslednje generacije – razume HTML. Medtem ko drugi sistemi vidijo le niz znakov, Latte vidi elemente HTML. Zato ima dve neverjetni funkciji, kot sta kontekstno občutljivo eskapiranje in n:atributi.

Kako Blade, Twig in drugi sistemi vidijo predlogo

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

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

Kako Latte vidi predlogo

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

Postavitve in dedovanje

Prefinjeni mehanizmi ponovne uporabe in dedovanja predlog povečajo vašo produktivnost, saj vsaka predloga vsebuje le svojo edinstveno vsebino, ponavljajoči se elementi in strukture pa so ponovno uporabljeni.

Peskovnik

Latte ima pod pokrovom motorja oklepni bunker. Imenuje se način peskovnika in šablone izolira od nezaupljivih virov, kot so tisti, ki jih urejajo uporabniki sami. Omogoča jim omejen dostop do oznak, filtrov, funkcij, metod itd. Kako deluje?

Je zelo hiter

Latte sestavi predlogo do optimalne kode PHP hkrati z vašim delom. Torej je tako hitra, kot če bi ustvarili samo PHP. Sestavljena koda PHP je jasna in enostavna za razhroščevanje. Predloga se samodejno ponovno sestavi vsakič, ko spremenimo izvorno datoteko.

Več kot 15 let

Latte razvijamo že več kot 15 let – in še naprej! Knjižnice, ki jih zagotavljamo, so zato zelo zrele, stabilne in široko uporabljene. Zaupajo jim številne svetovne korporacije, na nas pa se zanašajo tudi številna pomembna spletna mesta. Kdo uporablja in zaupa Latte?

Odlična dokumentacija

Bralci hvalijo dokumentacijo zaradi jasnosti in popolnosti. Želimo vam prijetno branje.

Odprta koda

Latte je odprtokoden in popolnoma brezplačen za uporabo.