真に安全で直感的なPHP用テンプレートを初めて採用

27%以上のWebサイトが
重大な脆弱性がある

Webサイトにおける最も一般的な重大な脆弱性は、クロスサイト・スクリプティング(XSS)です。 これは、攻撃者が悪意のあるスクリプトをページに挿入し、疑うことを知らないユーザーのブラウザで実行させることができます。 XSSは、ページを改ざんしたり、機密情報を取得したり、ユーザーの身元を盗んだりすることができます。

テンプレートシステムは、XSSに対する防御に失敗しています。Latteは、文脈依存のエスケープ機能により、効果的な防御を行うことができる唯一のシステムです

安全なウェブサイトを望むなら、誰でもLatteを使う。

クイズです:あなたはXSS脆弱性を防御できますか?

出典Acunetix社 Web脆弱性レポート

いくつかの異なるコンテキストで変数$textを自動的にエスケープする例(一番上のテンプレートを編集することができます)。

{var $text = "O'Neill"}
- をテキストで表示する。<span>テキスト{$text}で</span>
- を属性で指定します。<span title='{$text}'></span>
- 引用符で囲まれていない属性。<span title={$text}></span>
- JavaScriptで<script>var = {$text}</script>
- をテキストで表示します。<span>オニール</span>
- を属性で指定します。<span title='O&apos;Neill'></span>
- 引用されていない属性で<span title="O&apos;Neill"></span>
- JavaScriptで<script>var = "O'Neill"</script>

よく知ってる言葉

冗談ではなく、あなたはすでにラテ語を知っています。その中でどのように式を書くかも知っています。実際、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はPHPをベースにしていますが、TwigはPythonをベースにしています。Latteのデザイナーは、2つの異なる規約を常に切り替える必要がありません。 例えば、テンプレートのfor person in people、PHPのforeach $people as $person間です。 Latteには一つの区切り記号{...}あるので、どこで{% %}使い、どこで{{ }}使うかを考える必要もないのです。

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>

テンションが上がるキーボードセービングモード

この機能はユーザーから好評です。私たちはこれを「n:attributes」と呼んでいます。{if} ... {/if}..のような、HTML要素を包む対になるタグはすべて、そのn:if属性として書くことができます。{if} ... {/if}ように、HTML要素を包むペアタグは、そのn:if属性として記述することができる。 これは非常に効率的な記法である.属性はinner- tag-接頭辞を持つこともでき、その場合、動作はそれぞれ要素の内側で、開始と終了のHTMLタグに適用されます。 n-attributesの詳細

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は、NetBeansのネイティブサポートと、タグ、フィルタ、PHPコードを提案する優れた「PhpStorm用プラグイン」を持っています。

デバッギング

常に把握する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>

レイアウトと継承

洗練されたテンプレートの「再利用と継承」メカニズムにより、各テンプレートには固有のコンテンツのみが含まれ、繰り返される要素や構造は再利用されるため、生産性が向上します。

サンドボックス

Latteはフードのすぐ下に装甲されたバンカーを備えています。これはサンドボックスモードと呼ばれ、ユーザー自身が編集したテンプレートなど、信頼できないソースからテンプレートを隔離します。 タグやフィルター、関数、メソッドなどへのアクセスも制限されます。「どうやって使うんだ?

それは本当に速いです

Latteは、作業と同時にテンプレートを最適なPHPコードにコンパイルします。だから、まるで純粋にPHPで作成したかのような速さです。 コンパイルされたPHPコードは明瞭で、デバッグが容易です。テンプレートは、ソースファイルを変更するたびに自動的に再コンパイルされます。

15年以上

Latteの開発には15年以上の歴史があります。そのため、私たちが提供するライブラリは、非常に成熟し、安定しており、広く使用されています。また、多くのグローバル企業や重要なウェブサイトから信頼を得ています。 「Latteを使う人、信頼する人は?

優れたドキュメント

読者は、ドキュメントのわかりやすさや完成度を高く評価しています。快適な読書をお楽しみください。

オープンソース

Latteはオープンソースで、完全に無料で使用することができます。