URL 管理コンポーネントは主に 2 つの機能を提供します:
1. ユーザーが入力した URL に従って、このリクエストを処理するためのルート (どのコントローラーのどのアクションが処理するか) を解析し、同時にパラメーター部分を$_GET パラメータへの URL。すべての Web フレームワークでは、ルート配布作業を実行するためにこのようなコンポーネントが必要です。
2. ルートとパラメータ配列に基づいて URL を作成します。 URL はビュー レイヤでハードコーディングできます。つまり、URL アドレスを直接書き込むことができますが、これでは柔軟性に欠けることが多く、後のメンテナンスにコストがかかります。
array( 'components'=>array( 'urlFormat'=>'path', 'rules'=>array( '/art/<cate:\w+>/<key:\d+>/<id:\d+>/<p:\d+>'=>'article/<cate>/<key>', 'post/<id:\d+>/<title:.*?>'=>'post/view', '<controller:\w+>/'=>'<controller>/', ), ), );</action></controller></action:\w+></controller:\w+></title:.*?></id:\d+></key></cate></p:\d+></id:\d+></key:\d+></cate:\w+>
上記は URL 管理コンポーネントの構成で、合計 3 つのルールがあります。以下の図は、URL 解析と URL 作成の 2 つの機能を説明するために最初のルールを例にしています。 CUrlManager はルーティング ルールごとに、このルールに対応する 2 つの関数を処理する CUrlRule オブジェクトを作成します。そのため、ルールが複数ある場合は、複数の CUrlRule オブジェクトが存在します。したがって、CUrlRule は URL 管理の中核です。CUrlRule の動作原理を分析してみましょう。
各 URL ルーティング ルールは CUrlRule オブジェクトによって処理されます。次に、次のルーティング ルールを例として取り上げ、URL 解析と URL 作成を説明します。加工工程。各 CUrlRule オブジェクトによる URL の処理プロセスは、次の 3 つの段階に分けることができます。
1. CUrlRule オブジェクトの初期化
CUrlRule オブジェクトのコンストラクターで、6 つの重要なメンバー変数が初期化されます。
2. URL の解析
URL の解析は 3 つのステップに分かれています: a. パターン ルールに従って URL の各フィールドを解析します。 b. 参照に従ってルート内の参照フィールドを置き換えます。 c. params に指定されたフィールドを追加します。 _GET 配列
3. URL を作成します。 a. 入力ルートの各フィールドを、前のステップで解析した配列と結合します。マージされた配列がテンプレートを置き換えます。