PHPテンプレートエンジンは、品質の低いコードの作成が容易であると批判されていることがよくありますが、これは必ずしも真実ではありません。 PHPプロジェクトが、専用のテンプレートエンジンに依存することなく、基本的なモデルビューコントローラー(MVC)構造をどのように実施するかを見てみましょう。
まず、PHPの歴史の簡単なレビュー
HTMLテンプレートツールとしてのPHPの歴史には、ひねりとターンに満ちています。
HTMLテンプレートに使用される最も初期のプログラミング言語の1つはCでしたが、使用するのは面倒であり、このタスクには適していないことがわかりました。
Rasmus Lerdorfはこれを念頭に置いてPHPを作成しました。彼は、Cを使用してバックエンドビジネスロジックを処理することに反対しているわけではありませんが、Frontend Dynamic HTMLを生成するためのより良い方法を望んでいます。 PHPはもともとテンプレート言語として設計されていましたが、時間が経つにつれてより多くの機能を採用し、最終的にはスタンドアロンの完全なプログラミング言語になりました。
プログラミングモードとHTMLモードを切り替えるPHPのユニークな機能は非常に便利であると考えられていますが、プログラマーが維持が難しいコードを簡単に記述できるようになります。これは、ビジネスロジックとテンプレートロジックをミックスするコードです。 PHPファイルは、いくつかのHTMLテンプレートで開始され、警告なしに突然高度なSQLクエリに侵入します。この構造は、HTMLテンプレートの読み取りと再利用が困難です。
時間が経つにつれて、Web開発コミュニティは、PHPプロジェクトの厳格なMVC構造を実施することがますます価値が高まっていることを発見しました。テンプレートエンジンは、ビューをコントローラーから効果的に分離する方法として作成されています。
このタスクを達成するために、テンプレートエンジンには通常、次の機能があります。
- エンジンは、ビジネスロジックの機能を故意に弱めます。たとえば、開発者がデータベースクエリを実行する場合、コントローラーでそのクエリを実行してからテンプレートに渡す必要があります。テンプレート内のHTMLを照会することは不可能です。
- エンジンは、舞台裏で一般的なセキュリティリスクを処理します。通常、テンプレートは、開発者がユーザー入力を検証してテンプレートに直接渡すことに失敗した場合でも、危険なHTMLを自動的に免除します。
テンプレートエンジンは、多くのWebテクノロジースタックの主要な機能になりました。彼らはよりメンテナンスしやすく、より安全なコードベースを作成するので、驚くことではありません。
ただし、純粋なPHPを使用してHTMLテンプレートを処理することもできます。いくつかの理由でこれを行うことができます。たぶん、あなたはレガシープロジェクトに取り組んでおり、追加の依存関係を導入したくないか、非常に小さなプロジェクトに取り組んでおり、軽量に保つことを好むでしょう。または、この決定はあなた次第ではありません。
PHPテンプレートのユースケース
純粋なPHPテンプレートをよく実装することの1つは、WordPressです。これは、デフォルトで厳格なMVC構造を強制しません。完全なテンプレートエンジンを導入するには少し面倒ですが、ビジネスロジックをテンプレートから分離し、自分の意見を再利用可能にしたいと思っています。
あなたの推論が何であれ、純粋なPHPを使用してHTMLテンプレートを定義することが好まれることがあります。この記事では、これをより専門的な方法で行う方法について説明します。このアプローチは、PHPテンプレートの悪名高いスパゲッティコードスタイルと、正式なテンプレートエンジンが提供する「ロジックなし許可」アプローチとの実用的なトレードオフを表しています。
基本的なテンプレートシステムを実践する方法の例に深く掘り下げましょう。繰り返しますが、例としてWordPressを使用しますが、これは純粋なPHP環境または他の多くの環境に置き換えることができます。読み続けるためにWordPressに精通する必要はありません。
目標は、コンポーネントへの見解を分割し、ビジネスロジックとHTMLテンプレートを明確に区別することです。具体的には、カードグリッドを表示するビューを作成します。各カードには、最近の記事のタイトル、要約、著者が表示されます。
ステップ1:データを提示するデータを取得します
最初のステップは、ビューに表示するデータを取得することです。これには、SQLクエリの実行またはFramework/CMSのORMまたはヘルパー関数を使用してデータベースへの間接アクセスが含まれます。また、HTTPリクエストを外部APIに作成したり、フォームまたはクエリ文字列からユーザー入力を収集したりすることもできます。
この例では、WordPressのget_posts
ヘルパー関数を使用して、ホームページにいくつかの投稿を表示します。
3 ]);
これで、カードグリッドに表示したいデータにアクセスできますが、ビューに渡す前に追加の作業を行う必要があります。
ステップ2:テンプレートデータを準備します
get_posts
関数は、wp_postオブジェクトの配列を返します。各オブジェクトには記事のタイトル、要約、および著者情報が含まれていますが、プロジェクトの他のカードに他のタイプのデータを表示する可能性があるため、wp_postオブジェクトタイプにビューを関連付けたくありません。
代わりに、各記事オブジェクトをニュートラルデータ型(連想配列など)に積極的に変換することは理にかなっています。
3 ]); $ cards = array_map(function($ wp_post){ 戻る [ 「見出し」=> $ wp_post-> post_title、 'body' => $ wp_post-> post_excerpt、 'footing' => get_author_name($ wp_post-> post_author) ]; }、$ wp_posts);
この場合、各wp_postオブジェクトは、 array_map
関数を使用して連想配列に変換されます。各値のキーは、タイトル、抜粋、著者ではなく、見出し、ボディ、フーティングのより一般的な名前が与えられていることに注意してください。これは、カードメッシュコンポーネントが記事だけでなく、あらゆるタイプのデータをサポートするように設計されているためです。たとえば、参照と顧客名を含む推奨グリッドを表示するために簡単に使用できます。
データの準備ができたら、 render_view
関数に渡すことができます。
$カード ]);
もちろん、 render_view
関数はまだ存在しません。定義しましょう。
ステップ3:レンダリング関数を作成します
// functions.phpまたはグローバルに利用できる他の場所で定義します。 //グローバルネームスペースで競合の可能性を心配している場合は、 //この関数を名前空間クラスの静的方法として定義できますrender_view($ view、$ data) { 抽出($ data); require( 'Views/'。$ view。 '.php'); }
この関数は、レンダリングされるビューの名前と、表示されるデータを表す関連配列を受け入れます。 extract
関数は、連想配列内の各アイテムを取得し、その変数を作成します。この例では、index.phpで準備したアイテムを含む$cards
と呼ばれる変数があります。
ビューは独自の機能で実行されるため、独自の範囲があります。これは、競合を心配することなく単純な変数名を使用できるため、良いことです。
関数の2行目は、渡された名前に一致するビューを印刷します。この場合、 views/cards_grid.php
のビューを探します。先に進み、ファイルを作成しましょう。
ステップ4:テンプレートを作成します
このテンプレートは、抽出したばかりの$cards
変数を使用して、それを順序のないリストとしてレンダリングします。配列内の各カードについて、テンプレートはサブビューをレンダリングします:単一のカードビュー。
単一のカードを備えたテンプレートは、単一のカードを直接レンダリングする柔軟性を提供するか、プロジェクトの他の場所で別のビューで使用する柔軟性を提供するため有用です。
基本的なカードビューを定義しましょう。
<div> <h4></h4> <p></p> </div>
レンダリング関数に渡された$card
には、見出し、ボディ、および足場用のキーが含まれているため、同じ名前の変数をテンプレートで使用できるようになりました。
この例では、データがXSS危険ではないことをかなり確実にすることができますが、このビューを後でユーザー入力で使用する可能性があるため、各値をhtmlspecialchars
に渡すことは賢明です。スクリプトタグがデータに存在する場合、安全に逃げられます。
一般に、各変数にレンダリング前に非ヌル値が含まれているかどうかを確認すると役立ちます。これにより、タグに空のHTMLタグを残さずに変数を省略できます。
PHPテンプレートエンジンは優れていますが、PHPを使用して元の設計目的を達成することが適切な場合があります。動的HTMLを生成します。
PHPのテンプレート化は、維持が困難なスパゲッティスタイルのコードを引き起こす必要はありません。少し予見可能な視聴を使用すると、ビューとコントローラーを互いに分離する基本的なMVCシステムを実装できます。これは、驚くほど少量のコードで実行できます。
以上がPHPはテンプレートのA-OKですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この投稿では、Blackle Moriは、CohostのHTMLサポートの限界を押し広げようとしている間に見つかったハックのいくつかを示します。あえてこれらを使用してください、あなたもCSS犯罪者とラベル付けされないようにしてください。

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









