ホームページ >バックエンド開発 >PHPチュートリアル >CakePHPのRouterの仕組みと使い方
CakePHPのRouterの仕組みと使い方
1. 一般的な CakePHP リクエストの処理プロセス
?? ? ユーザーが Web サイトを閲覧してリクエストを行うと、.htaccess ファイルはリクエストを webroot/index.php ファイルにマッピングします。 1. 定数の定義。 bootstrap.php ファイル; 3 .dispather() 関数を呼び出します。
?
2. ルーター、ディスパッチャー、コントローラーの関係を理解する
?? ?(1) ルーターは、このリクエストのパラメーター (コントローラー、アクション、およびこのリクエストに関連付けられたその他のすべてのビジネス) を解釈して抽出します。
?? ?(2) ルーティングを使用した後、要求された URL がコントローラー アクション (特定のコントローラー クラスのメソッド) にマッピングされます。?? **** 部分関数分析 ****
?? 1.ルーター::parse($url)
?? 提供された URL に従って、コントローラー、アクション、パラメーターの配列を解析します。基準に基づく基準: デフォルトのルーティング、新しい定義によって作成されたルーティング ルール。
?
?
?? 2. Router::getArgs($args, $options = array()) 渡されたパラメータをパラメータに変換します
?
3. CakePHP でのルーター設定
?? CakePHP ソースパッケージ内の router.php ファイル:
?? カスタム ルーティング:
connect() 関数の 3 つのパラメーター: 1. 照合する URL 値、2. カスタマイズされたルーティング要素のデフォルト値、3. ルーターが照合するのに役立つ通常のルール。 URL 要素。
ルーター定義の基本形式: ?
?
Router::connect( 'URL', array('paramName' => 'defaultValue'), array('paramName' => 'matchingRegex') );
?
?? 注:(1)
は、URL タイプを定義します。 URL は通常、スラッシュで区切られますが、ワイルドカード (*) またはカスタム ルーティング要素 が含まれる場合もあります。 (URL 要素の先頭にはコロン が付きます)、 ワイルドカードを使用して URL のタイプと一致させます。特殊なルート要素を使用すると、コントローラーの アクション のパラメーターを収集できます。
(2)リクエストが発生すると、これらのルーティング要素の値はコントローラーの <span style="font-size: 12.0pt ;"> $this->params<span></span></span>
<span style="font-size: 12.0pt;">$this->params</span>
が存在します。これは名前付きパラメータ (名前付きパラメータ) とは異なるため、違いに注意してください: 名前付きパラメータ (/controller/action/name:value) カスタム ルーティング要素中に <span style="font-size: 12.0pt;">$this->passedArgs<span></span></span>
<span style="font-size: 12.0pt;">$this->passedArgs</span>
に存在します <span style="font-size: 12.0pt;">$this->params<span></span></span>
<span style="font-size: 12.0pt;">$this->params</span>
<span></span> に存在します
デフォルトルート: /:controller, /:controller/:action/* ?
?? そのような構成は何を返しますか? ? ?
?? ?確認する 2 つの例を書いてください:
?
4. CakePHP でのルーターのアプリケーション
??(1) 簡単なアプリケーション:
??(2) 高度なアプリケーション:
?? ?SlugRoute 解析方法は非常に簡単です。まず、親クラスの parse() 関数を呼び出して、正規表現を解析するためのパスを取得します。空または false が返されると、パス (パスが )、有効なパス (一致するパラメータを持つ <span></span>post の場合) <span></span>. を取得した場合のみ CakeRoute:parse() はパラメーター <span></span>、 をすでに作成しているため、パラメーター , ターゲットが存在しない場合は だけを返し、またはエラーを返します。 ?? ?
<span style="font-size: 12.0pt;">app/config/routes.php<span></span></span>
<span></span>
<span style="font-size: 12.0pt;">app/config/routes.php</span>
の style="font-size: 12.0pt;"> は、この <span style="font-size: 12.0pt;">中</span>
ルーター クラスを参照します:
?
5. CakePHP の Router 設定ファイルの欠点
?? CakePHPでは、Route を設定する必要はありません。 >/controller/action/param<span></span> を使用して <span></span>URL<span></span> を解析します。しかし、多くの場合、このような <span></span>URL<span></span> はフレンドリーではないため、カスタム <span></span>Route<span></span> を設定する必要があり、結果は になります。 Route<span></span>設定ファイルは常に拡張されています。 <span></span>PHP<span></span> はリクエストごとに実行環境を再構築する必要があり、リクエストごとに <span></span>Route<span></span> 設定ファイルを再構築する必要があることに注意してください。この構成では、巨大な <span></span>Route<span></span> 構成ファイル全体を繰り返し解析する必要があり、これは間違いなく大きな負担でした。 <span></span> <span></span>?? REST
スタイル アーキテクチャ、リソース を使用すると、この問題を解決できます。 URL<span></span>の動作は比較的確実であり、操作方法は<span></span>HTTP<span></span>メソッドによって決定されるため、<span></span>Route 設定ファイル すぐに体重が減ります。 <span></span> <span></span><span></span>??REST
ソフトウェア アーキテクチャは、インターネットを実現するために設計されたハイパーメディア分散システムです。アクション ガイド
。このコンセプトはあらゆるテクノロジーを使用して実現できます。このソフトウェア アーキテクチャの最も有名な実装は、
HTTP<span></span> プロトコルです。通常、REST を <span></span>REST/HTTP<span></span> と書きます。実際には、<span></span>REST は、HTTP、またはさらには RESTREST ソフトウェア アーキテクチャとして理解されます。 > と <span></span>HTTP<span></span> は同等の概念と見なされます。 <span></span>
<span></span>