PHP 開発の旅の始まりにいる方は、 おそらく、URL 内で完全なファイル名を使用して、 アプリケーション (server/contact.php など)。心配しないでください、私たちは皆そうやって始めました、そしてそれが私たちの学習方法です。
今日は、ファイル内のファイルのナビゲーション方法を向上させるお手伝いをしたいと思います。 応用。ルーティングはどのような場合でも重要なので、ここではルーティングについて説明します。 現代のアプリケーション。あなたの一歩を踏み出すのに役立ちます プロフェッショナルな PHP 開発。
ルーティング システムは、HTTP をマッピングするだけです。 リクエストをリクエスト ハンドラ (関数またはメソッド) に送信します。言い換えれば、それは を使用せずにアプリのさまざまな部分に移動またはアクセスする方法を定義します。 ファイル名を入力する必要があります。これは、作成または設定することで実行できます。 ルート(またはパス)。たとえば、ルート サーバー/コンタクトを使用すると、contact.php ファイルにアクセスできます。
まず最初に、内容を思い出させてください。ルーティングです。ルーティング アプリをより良い方法で構造化し、乱雑なものを取り除くことができます URL。これらは、優れたルーティング システムによって提供される 2 つの主な機能です。
ルーティング システムを実行するには、ルータは、 エントリーファイルをアプリに追加します。デフォルトでは、このエントリ ファイルの名前は、index.php です。ファイル内では、[switch](https://www.php.net/manual/en/control-structions.switch.php) または [match](https://www.php.php) を使用してルーティング システムを定義します。 net/manual/en/control- Structures.match.php) ステートメント.
最後に重要なことですが、すべてのリクエストをルーターにリダイレクトする必要があります。これは、PHP サーバーの構成ファイルで行われます。
次に進む前に、プロジェクトがどのようなものになるかを見てみましょう:
ファイル構造
以下のシェル コマンドを使用して、 project:
mkdir php-routing & cd php-routingtouch index.php .htaccess
リダイレクトは PHP サーバーで行われると前述しました。 設定ファイル。したがって、次のことを行うかどうかに応じて、いくつかの調整を行う必要があります。 Apache または NGINX サーバーを使用します。
ここでは、プロジェクトのルートに既に作成した .htaccess ファイルを簡単に使用できます。以下のディレクティブを追加します:
mkdir php-routing & cd php-routingtouch index.php .htaccess
注: サイトまたはアプリがサーバーのルートにある場合 (または仮想ホストがない場合)、.htaccess は次のようになります。
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php
上記のコードで、/folder/ をサイトが含まれるフォルダーの名前に置き換えます。
デフォルトの構成ファイルの名前は nginx.conf です。このファイルは、etc/nginx、usr/local/nginx/conf、または /usr/local/etc/nginx にあります。
index.php にリダイレクトするには、以下のコマンドを使用します。
RewriteEngine On RewriteBase /folder/ RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L]
場所/ブロックは、場所が明示的に指定されていない限り、すべての場所に一致することを指定します/
try_files ディレクティブは、その場所のブロックに一致する URI へのリクエストについて、最初に $uri (または $uri/) を試行し、ファイルが存在する場合は、ファイルを提供します。それ以外の場合は、フォールバック オプション (index.php) が使用されます。そして、この最後の動作が私たちが望んでいることです。
変更後にサーバーをリロードします。
これで、ルーティングがどのように機能するかがわかりました。すべてのリクエストを送信しても ルーターに。ここで、index.php にルーターのコードを記述します。
まず、HTTP リクエスト文字列を保持する変数を作成します。
location / { try_files $uri $uri/ /index.php}
この変数は比較に役立ちます。多くのルート (パス) を使用して、適切なビュー インターフェイスを呼び出します。
$request = $_SERVER['REQUEST_URI'];
ここで何が起こっているのでしょうか? switch ステートメントは、同じ式 (変数) に対する一連の if ステートメントに似ています。式が switch 式の値と一致する値に評価される case ステートメントが見つかった場合にのみ、コードが実行されます。これをわかりやすく説明しましょう。
変数が値 /views/users/ を保持していると考えてみましょう。上記のコードが実行されると、PHP は値 /views/users が case ステートメントの値 (この場合は /views/users) と等しいかどうかをチェックします。したがって、この条件は true と評価され、PHP はファイル /views/users.php を呼び出します。条件が false と評価された場合、PHP は switch ブロックの終わりまで次の case ステートメントをチェックします。
注: case ステートメントが true と評価されるたびに、PHP は次の case でコードを実行し続けます。これらの case ステートメントを必要とせずにステートメントを評価することができます。この場合、PHP には views/dep.php も必要です。この「悪い動作」を回避するには、各 case ステートメントの後に Break ステートメントを追加する必要があります。
次に、すべてをindex.php ファイルにまとめてみましょう。
mkdir php-routing & cd php-routingtouch index.php .htaccess
すでにご存知のとおり、ユーザー リクエストを $request 変数に保存することから始めて、それを switch ステートメントで使用します。コードをきれいにするために、ビュー ディレクトリ名を保持する変数を作成しました。
他にも 2 つの点にも注目してください:
ビューにダミー データを追加しましょう。
views ディレクトリにすべてのファイルがすでに作成されています。このディレクトリに移動して、各ファイルにコンテンツを追加しましょう。
各ファイルにコンテンツを追加します。
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php
RewriteEngine On RewriteBase /folder/ RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /folder/index.php [L]
location / { try_files $uri $uri/ /index.php}
$request = $_SERVER['REQUEST_URI'];
ご覧のとおり、各ファイルにはタイトルと段落だけが含まれています。好きなコンテンツを自由に追加して、ルーターをテストしてください。
このチュートリアルでは、次のような基本的なルーティング システムを最初から作成する方法を学習しました。
以上がPHP アプリのルーティング システムを最初から構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。