これを尋ねる理由は、PHPスクリプトがルートではないからです。たとえば、article.phpがある場合、ルートは単純にhttp://mysite.com/article.phpになります。
単純なファイルとして既に存在するルートの概念をさらに抽象化するのはなぜですか?
これを尋ねる理由は、PHPスクリプトがルートではないからです。たとえば、article.phpがある場合、ルートは単純にhttp://mysite.com/article.phpになります。
単純なファイルとして既に存在するルートの概念をさらに抽象化するのはなぜですか?
回答:
ルーターの機能を理解するには、最初に書き換えエンジンとは何かを理解する必要があります。ウィキペディアの記事から(強調鉱山):
書き換えエンジンは、Web URLの外観を変更するソフトウェアです(URL書き換え)。書き換えられたURL(短い、派手なURL、または検索エンジンフレンドリー-SEFとも呼ばれます)は、Webページへのより短く関連性の高いリンクを提供するために使用されます。この手法により、Webページの生成に使用されるファイルと、Worldに表示されるURLの間にある程度の分離が追加されます。
書き換えエンジンを使用する場合、URLとPHPスクリプトの間に1対1の相関関係はありません。同じ記事の例:
http://example.com/wiki/index.php?title=Page_title
次のように書き換えることができます。
この手法を使用することには、さまざまな利点があります。PHPは通常Apacheと緊密に結合されているため、最も一般的に使用される書き換えエンジンはApacheのmod_rewriteです。
書き換えられたURLが必要な場合、ルーティングはURLを取得し、コンポーネントに分割し、呼び出す実際のスクリプトを決定するプロセスであるため、何らかのルーティングが必要です。Zend Frameworkの標準ルーターのドキュメントページでは、プロセスを次のように説明しています。
ルーティングとは、URIエンドポイント(ベースURLの後に来るURIの一部)を取得し、それをパラメーターに分解して、そのモジュール、コントローラー、およびそのコントローラーのアクションがリクエストを受信するかを決定するプロセスです。
最近のほとんどのPHPフレームワークはMVCパターンに基づいており、MVCフレームワークではプロセスは次のようになります*:
index.php
スクリプト)に転送します。index.php
URLを取得し、ルーティングプロセスを開始します。パラメーターをコントローラーおよびメソッドに一致させるには、通常、正規表現による一致を使用して、ルートとして知られる複雑で動的なルーティングパターンを処理できるようにします。ルートの良い例は、CodeIgniterのURI Routingドキュメントページにあります。
$ route ['journals'] = "blogs";
$ route ['blog / joe'] = "blogs / users / 34";
$ route ['product /(:any)'] = "catalog / product_lookup";
$ route ['product /(:num)'] = "catalog / product_lookup_by_id / $ 1";
$route
アレイは、キーとの値として得られたアクションとしてパターンを保持しているcontroller/action_method/dynamic_parameter
フォーマット。
*これは、正規化プロセスの説明ではなく、単純化した説明として意図されています。