⊗ppPmSDFl 437 of 447 menu

PHPにおけるファイルベースのエンジン

サイトエンジンを実装し、URLに応じて異なるコンテンツが接続されるテンプレートファイルを作成できるようにします。

ページの構造は次のようになっているとします:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> content </main> <header> footer </header> </body> </html>

コンテンツが挿入される場所に、独自に考案した挿入コマンド、例えば {{ content }} を挿入してみましょう。サイトのテンプレートを変更します:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> {{ content }} </main> <header> footer </header> </body> </html>

次に、コンテンツファイルを配置する view フォルダを作成します。このフォルダ内、またはサブフォルダ内に配置します。

最初のファイルは次のようになります:

<div> content 1 </div>

2番目のファイルは次のようになります:

<div> content 2 </div>

3番目のファイルは次のようになります:

<div> content 3 </div>

次に、アドレスバーのURLに応じて対応するファイルが読み込まれるようにしましょう。この場合、URL /page1 では1番目のファイル、URL /dir/page2 では2番目のファイル、URL /dir/sub/page3 では3番目のファイルが読み込まれます。

実装に取り掛かりましょう。まず、.htaccess ファイルで、リソースファイル以外のすべてのリクエストアドレスが index.php ページにリダイレクトされるようにします:

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$ RewriteRule .+ index.php

index.php ページで、変数にリクエストされたURLを取得します:

<?php $url = $_SERVER['REQUEST_URI']; ?>

次に、テンプレートファイルのテキストを取得します:

<?php $layout = file_get_contents('layout.php'); ?>

次に、URLに基づいて view フォルダから対応するコンテンツファイルを取得します:

<?php $content = file_get_contents('view' . $url . '.php'); ?>

テンプレートテキスト内の考案したコマンドを、ファイルから取得したコンテンツに置き換えます:

<?php $layout = str_replace('{{ content }}', $content, $layout); ?>

ブラウザに、コンテンツが挿入されたテンプレートファイルを出力します:

<?php echo $layout; ?>

すべてをまとめると、次のコードになります:

<?php $url = $_SERVER['REQUEST_URI']; $layout = file_get_contents('layout.php'); $content = file_get_contents('view' . $url . '.php'); $layout = str_replace('{{ content }}', $content, $layout); echo $layout; ?>

説明されたファイルベースのエンジンを実装してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否