PHPのための、初めて本当に安全で
直感的なテンプレート

ウェブサイトの27%以上に
重大な脆弱性があります

ウェブサイトにおける最も一般的な重大な脆弱性はクロスサイトスクリプティング(XSS)です。 これにより、攻撃者は悪意のあるスクリプトを他者のページに挿入し、疑いを持たないユーザーのブラウザで実行させることができます。 ページを変更したり、機密情報を入手したり、ユーザーのIDを盗んだりすることも可能です。[lead]

テンプレートシステムはXSSに対する防御に失敗しています。Latteは、コンテキスト依存のエスケープにより、効果的な防御を備えた唯一のシステムです。[lead]

安全性の高いウェブサイトを求めるなら、Latteを使用します。[lead]

クイズ: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 vs Twig

LatteはPHPに基づいていますが、TwigはPythonに基づいています。Latteのデザイナーは、2つの異なる規約を常に切り替える必要はありません。 たとえば、テンプレートでのfor person in peopleとPHPでのforeach $people as $personの間で。 Latteには{...}という1つの区切り文字があるため、{% %}{{ }}のどちらを使用するか考える必要さえありません。

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:属性と呼んでいます。HTML要素をラップする{if} ... {/if}のようなペアのタグは、その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でネイティブにサポートされており、タグ、フィルター、PHPコードを提案する優れたPhpStorm用プラグイン

デバッグ

常に最新情報を把握してください。Tracy用プラグイン

次世代テンプレート

Latteは次世代のテンプレートシステムです – HTMLを理解します。他のシステムが単なる文字の集まりとしか見なさない場所で、LatteはHTML要素を見ます。 これが、コンテキスト依存のエスケープ

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コードは明確でデバッグが容易です。ソースファイルを変更するたびに、テンプレートは自動的に再コンパイルされます。

18年以上

私たちはLatteを18年以上開発してきました – そして、それはまだ続いています!私たちが提供するライブラリは、したがって非常に成熟し、安定しており、広く使用されています。それらは多くのグローバル企業に信頼されており、多くの重要なウェブサイトが私たちに依存しています。 誰がLatteを使用し、信頼していますか?

素晴らしいドキュメント

読者は、ドキュメントの明瞭さと完全性を称賛しています。快適な読書をお祈りします。

オープンソース

Latteはオープンソースであり、完全に無料で使用できます。