まず、index.php、router.php、.htaccess ファイルを作成します。
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]
ユーザーが router.php に直接アクセスするための URL を入力すると、このコードは 404 応答を表示します。
router.phpにPageクラスを追加
class Page { protected static bool $Return_404 = true; }404 ページを返すための静的ブール変数を作成します。デフォルトとして true に設定します。
ここで、404 ページの関数を追加します。protected static function Return_404(): void { (file_exists("./Pages/404.php")) ? require_once "./Pages/404.php" : http_response_code(404); }ここでは、Pages フォルダー内に 404 ページを配置します。任意のフォルダーに置くことができます。
「ファイル」機能も追加します。
protected static function File(string $file): string { if (!empty($file)) { (str_contains($file, "?")) ? $file = strtok($file, '?') : $file; ($file[strlen($file) - 1] === "/") ? $file = rtrim($file, "/") : $file; } return $file; }この関数は、リクエスト URL にクエリ文字列または「/」で終わるクエリ文字列が含まれているかどうかを確認し、それを削除します。
「strok」文字列関数を使用して、「?」より前の文字列値を取得します。 「strok」がこのように使用されることを意図していないことはわかっていますが、これは機能し、複雑なアルゴリズムを不必要に実行する必要がなくなります。 「rtrim」文字列関数を使用して、文字列の最後に「/」が含まれている場合はそれを削除します。router.php に Routes クラスを追加します
class Routes { public static array $Route = array( "" => "Pages/home.php", "/about" => "Pages/about.php", ); }ここでは、ルーティングを保存するための静的配列を作成します。
この配列には、「リクエストされた URL」=>「ファイルの場所」が含まれます。
すべてのページ ファイルを Pages フォルダーに置きます。好きな場所に置くことができます。router.php に Router クラスを追加します
Router クラスは、上ですでに作成した Page クラスを拡張します。
"" => "Pages/home.php" はホームページ用であることに注意してください。class Router extends Page { }次に、要求されたファイルが Router クラスに存在するかどうかを確認する関数を記述します。
public static function Run(): void { $requested_file = self::File($_SERVER["REQUEST_URI"]); foreach (Routes::$Route as $request => $file) { if ($requested_file === $request) { if (file_exists($file)) { self::$Return_404 = false; require $file; } else echo "Error"; } } if (self::$Return_404) self::Return_404(); }この関数は、要求されたファイルが $Route 配列内にあるかどうかを最初に確認します。存在する場合、静的ブール値 $Return_404 は false に設定され、404 ページは表示されず、ページ ファイルも取得されません。存在しない場合は、404 ページが返されます。
ファイルは存在するが、Pages フォルダーにファイルがない場合、関数は「エラー」をエコーします。ここで「エラー」をエコーする代わりに 404 ページを表示できます。最終的な router.php ファイルは次のようになります。
$file) { if ($requested_file === $request) { if (file_exists($file)) { self::$Return_404 = false; require $file; } else echo "Error"; } } if (self::$Return_404) self::Return_404(); } } class Routes { public static array $Route = array( "" => "Pages/home.php", "/about" => "Pages/about.php", ); }インデックス.php
index.php では、Router クラスの「Run」関数を使用します。
Router ページのすべての HTML コードは「body」タグ内にあります。
ページの作成
最後に、home.php、about.php、404.php を Pages フォルダーに作成します。
home.php
Home page
about.php
about page
404.php
404 page
「xampp」または「PHP サーバー」拡張機能でコードが動作するかどうかを確認します。
エラーが発生した場合は、お気軽にお知らせください。 XD
次の場所で github リポジトリを確認することもできます:
ときぎん / ページルーター
php-router リポジトリからの手動ルーター
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3