0

私が取り組んでいるプロジェクトでは、PHP で小さなフロー制御言語を解析する必要があります。

Smarty 構文は理想的ですが、Smarty のキャッシングを使用することはできず、その機能の小さなサブセット (基本的に{if}は 、 {else}{elseif}{/if}および関数プラグインのみ) しか必要ありません。

キャッシングがないにもかかわらず、パフォーマンスは主要な要因です。Smarty フレームワーク全体を含めてキャッシュを無効にするのは遅すぎます。

より高度な機能なしで Smarty のような構文を処理できる PHP フレームワークはありますか? 完全に一致する必要はなく、厳密に一致する必要はありません。単純な HTML と組み合わせることができます。

ロジックを解析して処理するコードif .. elseif .. else ..も高く評価されます。残りは自分でハックできます。

前に言及するのを忘れていました。テンプレートはユーザーが編集できるため、セキュリティが懸念されます。

4

1 に答える 1

0

いずれにせよ、すべてのテンプレート言語は PHP にコンパイルされ、速度が要因であるため、埋め込み PHP ステートメントを使用しないのはなぜですか? これは可能な限り高速であり、サードパーティのホーカス ポーカスは必要ありません。

PHP は、最初に使用するテンプレート言語です。

<div>
    <?php if (true): ?>
        <h1>It's true</h1>
    <?php else: ?>
        <h1>It's false</h1>
    <?php endif; ?>
</div>

ユーザーはテンプレートを編集できるため、上記のオプションはほとんどありません。やりたくないことを何でもできる自由は、セキュリティ上の大きなリスクです。したがって、可能なことを制限するには、テンプレート エンジンが必要です。

Twigは非常に優れたテンプレート エンジンであることが常にわかっていました。キャッシュなしで非常に高速で、プロジェクトに簡単に含めることができます。間違いなく一見の価値があります。

Twig では、サンドボックス拡張機能を使用してユーザー テンプレートをサンドボックス化することもできます。

http://twig.sensiolabs.org/doc/api.html#sandbox-extension

于 2013-05-17T13:07:56.740 に答える