現在、テンプレートエンジンとしてのPHPとPHP上のテンプレートエンジンとの間の選択についての議論を行っています。
あなたの選択とその理由は何ですか?
PHPがテンプレートエンジンそのものである場合に、別のテンプレートエンジンを使用する理由を説明します。
テンプレートエンジンの場合:
Plain-phpの場合:
私はPHP可能であればそれ自体を好みます。そして、ほとんどの人はカスタムテーマを作成してソフトウェアをハックしたくないので、大まかに読んでそのセキュリティを調べるのは簡単です。 、私はテンプレート作成とプログラミングの両方を行い、グラフィックアートを行う「間」であり、私のスキルセットは厳格なプログラマーや厳格なアーティスト/デザイナーとは異なります。
Smartyを導入したとき、Webデザイナーがsmarty変数を使用してHTMLを作成できるようにすることは非常に簡単でした。プログラミングチームのメンバーは、より多くのバックエンド作業、つまりSmarty変数のコンテンツの作成に集中しています。
これにより、開発ライフサイクルが短縮され、作業をより多くの人々に分割できるようになり、最終的には設計の改善につながりました。
まあ、それは私の意見ですが、テンプレートエンジンはひどいです。最初にテンプレートエンジンの実装方法を理解し、次にその使用方法を学習する必要があります。 PHPが単独で最適に機能し、はるかに柔軟性が高いため、無駄な時間のようです。
次の理由が適用されます。
テンプレートエンジンを使用すると、非プログラマがテンプレートを実行している場合に役立ちます。多くの場合、単純化されたテンプレート言語は、プログラマでない人にとってPHP自体よりも簡単です。
そうは言っても、私(または私と他の開発者)だけの場合は、テンプレートの使用をやめることになります。
PHP ではないテンプレートエンジンですが、テンプレートまたはテンプレートエンジンの記述に使用できる言語です。テンプレートエンジンは単なる言語ではなく、スクリプトがテンプレートを見つけて整理したり、スクリプトからテンプレートにデータを割り当てたりできるようにするプログラミングAPIでもあります。 Pure PHPはまったく何も提供しません-それは単なる言語です。代わりに、Zend FrameworkのZend_Viewのようなライブラリを比較に使用する必要があります(基本的に、Smartyとまったく同じように機能しますただし、PHPを使用してテンプレートを作成します)。PHPまたはその他のテンプレート言語としてテンプレートエンジンを使用するかどうかを尋ねる必要があります。
言語自体をテンプレート化する場合、テンプレートを作成するには通常のループと条件で十分ですが、この「十分な」ということは、簡単、快適、効率的、または柔軟であることを意味しません。 PHPはテンプレートデザイナーに特別なものを提供しませんが、多くの「テンプレート言語」(Smartyなど)はPHPの限られたサブセットのみを提供するため、プログラマがPHPを選択しても驚くことはありません。彼らは関数を書いてOOPを使用できます。これはこれには大きすぎます(私の意見では)ですが、動作し、本当に役立ちます。
ポイントは、カスタムテンプレート言語はPHPの欠点に制限されないが、設計者は「変数とループを表示するだけで十分である」と主張して、通常はそれを見ないことです。言語のほうがはるかに効果的です。
この方法に従うテンプレート言語の例については、PHPTALおよびOpen Power Template 2を参照してください。TinyButStrongにも同様のアイデアがありますが、残念ながらこのテンプレートエンジンは非常に低速です。
テンプレートエンジンとしてのPHPは、HTML構文を混同しても文句を言いません。タグを閉じるのを忘れたり、タグを誤ってネストしたりすることができます。
PHPの出力はデフォルトではエスケープされないため、htmlspecialchars()
を厳密に追加することを忘れない限り、サイトにはHTMLインジェクション(XSS)の脆弱性があります。
<p>Hello <?= $name ?></b>
<!-- Simple template full of errors -->
これらの問題は、XHTML 適切に を生成しようとするとさらに悪化します。平易なPHP-もちろんできます-しかし、それはより多くの努力と勤勉を必要とします。
だからこそ、私の推奨事項は [〜#〜] phptal [〜#〜] です。 OPT2 も問題ありません。
サバントはあなたが探しているものです。 PHP上で新しいテンプレート言語を解釈する代わりに、テンプレートでPHP演算子を使用できるようにする、素敵なラッパークラスです。
長所:
システムに余分な作業を追加しないことは理にかなっています。
開発者向けの学習曲線はありません。皆さんが規律があるなら、これが道です。 (サバント)
短所:
Savantは適切に分離することを推奨していますが、開発者がビジネスロジックを開発コードから分離することを強制するものではありません。決して破られるべきではないルールがあります。テンプレートでのみ変数を出力し、条件とループを使用できます。開発者がテンプレートに変数を作成することを許可しないでください。残念ながら、開発者は何回言っても、これを行うことはないようです。そのため、開発者はビジネスと設計を完全に分離することを余儀なくされるため、Smartyのようなエンジンを使用する価値があります。
自分のために、または多くの開発者がいないプロジェクトを行う場合は、Savantを使用する傾向があります。そのプロジェクトが私よりもはるかに大きい場合、建築ではSmartyのようなものを探します。
いずれにせよ、コードの分離は、SavantまたはSmartyを使用する重要な天気です。他にも良い選択肢があるはずです。
PHPはほとんどのタスクに最適ですが、テンプレートエンジンを使用すると、プロジェクトをより簡単にスケーリングできます。
Smarty または [〜#〜] phptal [〜#〜] のような既製のものは、自分でロールする時間がない(そして必要としない)場合に最適です彼らが提供する以上)。また、より専門的なものが必要な場合は、後から独自の実装でかなり簡単に置換/変更できます。
私は個人的にPHPTALで良い経験をしました。それは主にあなたの邪魔にならず、シンプルだからです。
次の記事では、PHP用テンプレートエンジンに関するさまざまな観点を要約しています。
PHP第3種テンプレート http://www.tinybutstrong.com/article_3rd_kind.html
PHPで最適に機能しました。コードを適切に分離でき、グラフィックデザイナーは従うべきいくつかの簡単なルールを学ぶことができましたが、ほとんどはHTML/CSS PHPではなく、インターフェイスについて考えることなく、重いコードを書くことができます。
新しいプロジェクトでの私の選択は、おそらく、別のテンプレートエンジンを使用する代わりに、おそらくMVCフレームワークと組み合わせて、PHPのテンプレート機能を使用することです。結局のところ、コードの単純さや分離のクリーンさのために、{$myVar}
または<?= $myVar ?>
コード内。 PHPまたはMVCフレームワークによって、条件、ループ、またはキャッシュなどのバックエンドテクノロジなどのより複雑なテンプレート機能も同様に(またはそれ以上)処理できます。
私は両方のアプローチを使用しました(テンプレートエンジンを使用する場合と使用しない場合)が、個人プロジェクトでのみ使用し、チームプロジェクトでは使用しませんでした。
PHPコーディング機能は進化し、設計機能も同じです。そのため、デザイナーと開発者とチームで作業する場合、ジョブを並列化し、デザイナーにHTMLを操作させるテンプレートエンジンが必要です。
私の個人的な選択はRaintplです。なぜなら、ここではベンチマークがあなたを助けることができる軽量で、フレンドリーで速いからです(また、賢くて賢い人もいいです!):
PHPはテンプレートエンジンではなく、スクリプト言語です。
VirtueMart、Joomla、またはPHPのテンプレートの概念が原因かどうかはわかりませんが、VirtueMartを独自のグラフィックテーマに合わせるのはPURE HELLです。 (私は単純なCSSスタイルについて話していません。)
PHPでテンプレートエンジンを使用します。ビジネスロジックとプレゼンテーションロジックを高度に分離したいためです。Webプログラミングは、PHP (または他のプログラミング言語)にはHTMLが散在していません。これはMicrosoftのコードビハインドが非常に人気があるためです。
KudzuPHPというテンプレートエンジンを使用します。これは、クラシックASP用のKudzuASPの移植版です。多くのテンプレートエンジンとは異なり、ビジネスルールとロジックをホストするコードは、テンプレートエンジンが呼び出された後、テンプレートエンジンのイベントハンドラーになります。このアプローチにより、PHPコードのコードを変更する必要なく、テンプレートを変更(プレゼンテーションの大きなブロックを移動)することができます。
KudzuPHPには独自のライブラリシステムが含まれており、新しい拡張タグとライブラリの作成は非常に簡単です。
KudzuPHPはここで見つけることができます: http://www.andrewfriedl.com/downloads/ Wordpress Wordpress APIなしPHP上部のWordpress.orgに移動し、プラグインで「Kazoo」を検索します。
最近、これについてブログ記事を書きました。
セキュリティのためだけに、必ずテンプレートエンジンを使用してください(Twig is secure)。
優れたテンプレートエンジン(Twigなど)は以下を提供します。
現在、最も高速で使いやすいです。 PHPテンプレートエンジンで一連のベンチマークを行った後、twigはネイティブphp言語の直後の2番目になります。
スタンドアロンのテンプレートエンジンの学習に時間を費やす必要がある場合は、代わりにフレームワークの学習に時間を費やします。私の選択は、Zend Frameworkを使用することです。これは、MVCアプローチを使用して実装されると、フレームワークの能力と、PHP自体のネイティブテンプレート機能を提供します。
この質問をして以来、私は mustache に出会いました。これは、ロジックのないテンプレート言語です。
したがって、これはPHPまたはsmartyとは異なり、あらゆる種類のロジックをテンプレートに追加する可能性がありますが、ビューモデルのようなものにすべてのロジックを保持する必要があります。
これは、ロジックがまだ可能なテンプレート言語に切り替えるよりも良いオプションのように思えます。