Prve resnično varne in
intuitivne predloge za PHP

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

Najpogostejša kritična ranljivost spletnih mest je Cross-Site Scripting (XSS). Napadalcu omogoča vstavitev zlonamernega skripta na tujo stran, ki se nato izvede v brskalniku nič hudega slutečega uporabnika. Lahko spremeni stran, pridobi občutljive informacije ali celo ukrade uporabnikovo identiteto.

Sistemi predlog ne uspejo pri obrambi pred XSS. Latte je edini sistem z učinkovito obrambo, zahvaljujoč t.i. kontekstno občutljivemu ubežanju.

Kdor želi imeti dobro zavarovano spletno mesto, uporablja Latte.

Kviz: se lahko ubranite pred ranljivostjo XSS?

Vir podatkov: Acunetix Web Vulnerability Report

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

{var $text = "O'Neill"}
- v besedilu: <span>{$text}</span>
- v atributu: <span title={$text}></span>
- v atributu brez narekovajev: <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 atributu brez narekovajev: <span title="O&apos;Neill"></span>
- v JavaScriptu: <script>var = "O'Neill"</script>

Jezik, ki ga dobro poznate

Ne pretiravamo. Jezik Latte res že poznate. V njem že znate pisati izraze. Pišejo se namreč povsem enako kot v PHP. Zato vam ni treba razmišljati, kako se kaj piše v Latte. Ni vam treba iskati po dokumentaciji. Ni vam treba učiti drugega jezika. Preprosto pišete 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 Twigu

Latte izhaja iz PHP, medtem ko Twig izhaja iz Pythona. Oblikovalcu v Latte ni treba nenehno preklapljati med dvema različnima konvencijama. Na primer med for person in people v predlogah in foreach $people as $person v PHP. Prav tako mu ni treba razmišljati, kje uporabiti {% %} in kje {{ }}, saj ima Latte en sam ločevalnik {...}.

Preizkusite orodje za pretvorbo predlog Twig v 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>

Varčen način, ki vas bo navdušil

To funkcijo uporabniki obožujejo. Imenujemo jo n:atributi. Vsako parno oznako, kot na primer {if} … {/if}, ki obdaja HTML element, je mogoče zapisati kot njegov atribut n:if. Tako dosežete zelo varčen zapis. Atributi imajo lahko še predpono inner- in tag-, potem se vedenje nanaša na notranjost elementa oz. na odpiralno in zapiralno HTML oznako. Več o n-atributih

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

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

Urejanje

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

Odpravljanje napak

Bodite vedno na tekočem. Vtičnik za Tracy na vsaki strani obvešča, katere predloge in katere spremenljivke se izrisujejo.

Sistem predlog nove generacije

Latte je sistem predlog nove generacije – razume jezik HTML. Kjer drugi sistemi vidijo le kup znakov, Latte vidi HTML elemente. Zato ima dve čudoviti funkciji, kot sta kontekstno ubežanje in n:atributi.

Kako predlogo vidijo Blade, Twig in drugi sistemi

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

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

Kako predlogo vidi 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>

Postavitve in dedovanje

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

Peskovnik

Latte ima oklepni bunker neposredno pod pokrovom. Imenuje se peskovniški način in izolira predloge iz nezaupljivih virov, ki jih na primer urejajo sami uporabniki. Omogoča jim omejen dostop do oznak, filtrov, funkcij, metod itd. Kako deluje?

Hitro kot veter

Latte med izvajanjem prevaja predloge v optimalno PHP kodo. Torej je popolnoma enako hitro, kot če bi pisali čisto PHP. Prevedena koda je pregledna in jo lahko enostavno odpravljate napake. Ob vsaki spremembi predloge se seveda ponovno prevede.

Več kot 18 let razvoja

Latte razvijamo že več kot 18 let – in število še vedno raste! Knjižnice, ki jih nudimo, so zato zelo zrele, stabilne in široko uporabljene. Zaupajo jim številne globalne korporacije in poganjajo mnogo pomembnih spletnih strani. Kdo uporablja in zaupa Latte?

Odlična dokumentacija

Bralci pohvalijo dokumentacijo za jasnost in popolnost. Želimo vam prijetno branje.

Odprtokodno

Latte je odprtokoden in ga lahko uporabljate popolnoma brezplačno.