⊗ppPmSDRt 444 of 447 menu

PHPエンジンでのシンプルなルーティング

前回のレッスンでは、当サイトには 単一のURLグループしかありませんでした。 もちろん、通常ウェブサイトには 複数の種類のアドレスがあります。

各アドレスグループは、 それぞれの正規表現によって処理されます。 これらはルートと呼ばれます。 したがって、ルートとそれを処理するコードを 対応付けるプロセスをルーティングと呼びます。

例えば、2種類のアドレスがあるとしましょう。 各グループに対して独自のルートを書いてみましょう:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // スラグによる単一ページ } if (preg_match('#^/page/all$#', $url, $params)) { // 全ページのリスト } ?>

便宜上、各ルートの処理コードを 別々のファイルに分けましょう:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

インクルードされるファイルは、結果として ページのタイトルとコンテンツを含む配列を 返す必要があります。

まず、そのスラグに基づいて単一ページを 表示する最初のファイルのコードを書きましょう:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

次に、全ページへのリンクリストを 表示する2番目のファイルのコードを書きましょう:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'all pages', 'content' => $content ]; return $page; ?>

いずれかの条件が実行された後、変数 $pageには常に単一の構造を持つ配列が 格納されます。この配列を使って、 サイトテンプレートにタイトルとコンテンツを 挿入しましょう:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

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

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否