「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP で単純なページルーターを作成する

PHP で単純なページルーターを作成する

2024 年 11 月 7 日に公開
ブラウズ:393

ファイルの作成

まず、index.php、router.php、.htaccess ファイルを作成します。

すべてのリクエストを .htaccess のindex.php にリダイレクトします。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

router.php への直接アクセスを防止する

ユーザーが 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 リポジトリを確認することもできます:

Creating a simple page router in PHP ときぎん / ページルーター

php-router リポジトリからの手動ルーター

リリースステートメント この記事は次の場所に転載されています: https://dev.to/kohtet_gintoki/creating-a-simple-page-router-in-php-2hpf?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3