ThinkPHP ルーティング パラメーターとリソース ルーティング分析

咔咔
リリース: 2020-12-01 13:39:21
オリジナル
4202 人が閲覧しました

ルーティングはプロジェクト開発における重要なリンクです。すべてのプロジェクトはルーティングを使用してインターフェイスを管理します。次に、この記事ではソース コードからルーティングを学習します。

#1. ルーティングパラメータと変数ルール

##最初に同じコードを開始ただし、今回はルーティング パラメータと変数ルールに焦点を当てます。

これら 2 つのポイントは、使用方法と簡単な実行プロセスを簡単に説明するためのものです。

これら 2 つの点は通常の開発プロセスではあまり使用されないため、より深く理解するために説明は省略します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析ルーティング ルールを登録します
ファイル

thinkphp/library/think/route/RuleItem.php にあることを覚えておいてください。ルーティングパラメータの使用を見たことがありますか?

ThinkPHP ルーティング パラメーターとリソース ルーティング分析ルーティング パラメータの処理について
また、このドキュメントでは、以下に示すように、サポートされている多くのパラメータも提供します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ドキュメントでサポートされているパラメータ

このルーティング パラメータの使用方法!

次に、前に使用したルートを使用し、複数のサフィックスの一致をサポートするように URL サフィックス検出を設定します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ルーティングのケース

では、設定したルートにどのようにアクセスすればよいでしょうか。

通常のルーティングルールに従ってアクセスするとエラーが報告されますので、正しいアクセス方法を読み続けてください。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
結果へのアクセス

正しいリクエスト アドレスは http://www.source.com/index.php/hello/1 である必要があります。 html、つまり、設定したサフィックス html をリクエスト アドレスに接続する必要があります。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
結果へのアクセス

このブロックの具体的な実行プロセスは、コード トラッカーを使用して簡単に確認できますが、Kaka はここでは説明しません。

ルーティングパラメータについては、ここで事例を紹介して、基本的には終わりです。

グローバル ルーティング パラメータ

ルーティング パラメータの最後の説明は、グローバル ルーティング パラメータです。

ドキュメントに直接アクセスして確認してください。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
グローバル ルーティング パラメーター

ここで、Kaka はテスト用に 2 つのルーティング ルールを設定します。1 つのパラメーターはオプションで、もう 1 つは必須であり、ルーティング ルールはファイルを追加するように設定されています。接尾辞。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ルーティング ファイル

パラメータを渡すときのリクエスト アドレス。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析#アクセス結果
パラメータを渡さずにアドレスを要求します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析アクセス結果
上記はルーティングパラメータの記述内容です。

特に詳しい説明はなく、簡単に使い方を説明するだけで、こういうものがあるので理解するだけで十分です。

変数ルール

同じ変数ルールですが、Kaka の日常の開発作業ではさらに利用できません。

変数ルール Kaka は、パラメータをフィルタリングすることが唯一の利点であると考えています。

つまり、変数ルールは、ルーティング ルールにパラメータがある場合にのみ存在する動作です。

カカ ここで簡単なケースを紹介します。

デモケース

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ルーティング ファイルのデモ ケース

ルートの後にパラメーターを追加パターン

次に、これを記述する方法を見てみましょう。リクエスト 。

パラメータが数値の場合、入力されたパラメータを出力できます。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
初めてアドレスをリクエストする場合

ただし、文字が渡されるとエラーが報告されます。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
結果の印刷

したがって、変数ルールは、ルーティング ルールの後にパラメータをフィルタリングすることであり、通常のルールを使用して処理されます。

これまでは、ルーティング パラメータと変数ルールについて簡単に説明しました。

内容は非常にシンプルですが、使い方を紹介するユースケースがほとんどで、ソースコードを深く検討することはありません。

まず第一に、私は日常の開発中にこれを使用することはほとんどありません。

2 番目に、次の記事でさらに詳しく理解する必要があります。ここでは一般的な理解を示します。

実際のところ、ルーティング アドレスを入力すると内部コンテンツが表示される理由をまだ理解していない人が多いと思われますが、これについては後ほど詳しく説明します。

2. リソースルーティング

リソースルーティングの設定も非常に簡単です。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ルーティング ファイル

コマンド ラインを使用してファイルを作成するのも便利です。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
コマンドを使用してファイルを作成する

作成したコントローラー自体がリソース ルーティング ファイルです。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
リソース ルーティング コントローラー

その後、Route ファイルのリソース メソッドは引き続き実行されます。

このメソッドには、ルーティング ルール、ルーティング アドレス、ルーティング パラメータ、および変数ルールも含まれます。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
リソース ルーティングの登録

次に、thinkphp/library/think/route/Resource.phpClass

に移動します。

このクラスでいくつかの簡単な属性の割り当てを時間内に実行します。

次に、カカさんが丸で囲った場所があります。次に、カカさんが丸で囲った場所について説明します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
thinkphp/library/think/route/Resource.php

リソースクラスは RuleGroup クラスを継承しているため、thinkphp/library/think にジャンプします。 /route/RuleGroup.php クラス。

このメソッドによって実行されるアクションに進みます。

  • ルーティング ルールは単純に処理されます。ルートにパラメータがある場合は、ルーティング ルールを blog/<name> または blog/<name> </name></name>
  • 次のステップは、$this->parent について説明することです。なぜここに object(think\route\Domain) があるのか​​、最初の記事です。ルーティング アーティクルのセクション 3 が必要です。このステップでは、fullName に値が割り当てられます。
  • 最後のステップは、値を fullName に割り当てることです。実際には、ルーティング ルールを fullName に割り当てます。
ThinkPHP ルーティング パラメーターとリソース ルーティング分析
グループのルーティング ルールを設定します。

次に、上位層に戻って次の作業を確認します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
上のファイルに戻ってソース コードを読み続けます

グループ ルーティング ルールを設定した後、主に次のいくつかの属性に値を割り当てます。三つ。

  • #ルーティング変数ルール
  • ルーティング パラメータ
  • REST ルーティング メソッド定義
属性の割り当てについては何も言う必要はありません。対応する属性が何を行うかを理解する必要があるだけです。

次のステップでは、リクエスト メソッドをキー値として、$this を値として使用して、このクラスのインスタンスを返し、このルーティング メソッドがアノテーション ルーティングであるかどうかを検出します。

返された結果は、誰でも簡単に確認できるように出力されます。内容は傍受されていないため、値が何であるかを知る必要があるだけです。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析結果を返す
上記の実行後、上位層に戻って遅延メソッドを実行します

まず渡されたパラメータが何なのかを知る: ルートの解析が遅れているかどうか

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
実行後に上位層に戻るコード

次に、遅延メソッド

ThinkPHP ルーティング パラメーターとリソース ルーティング分析#遅延メソッド
##このメソッドでは、parseGroupRule が呼び出され、渡されるパラメータはグループのルーティング ルールです

このセクションの内容はルーティング グループ化に関するものであるため、ここでは説明しません。

グループ ルーティング ルールThinkPHP ルーティング パラメーターとリソース ルーティング分析
これまで、リソース ルーティングについて簡単に説明しました。

最後に、Kaka が実行頭脳を提供します。

#リソース理由実行処理
ThinkPHP ルーティング パラメーターとリソース ルーティング分析

3. ドメイン名の設定時期について実際には、前のセクションに次のようなコード行があります$this->parent->getDomain()

このコード行はメソッド名に基づいています

が要求されたドメイン名を取得することは誰もが知っていますが、このドメイン名がどこに設定されているか知っていますか?

このリソース ルートをリクエストすると、Route クラスのコンストラクターが実行されます

ThinkPHP ルーティング パラメーターとリソース ルーティング分析#リソース ルーティング
#コンストラクターには、要求されたドメイン名を取得するためのコード行があります

# #Constructor
ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ホスト メソッドが表示されます
ホスト メソッドでは、このパラメーターは trueです

ここだけ注意する必要があります

$ this->server(' HTTP_HOST')

で十分です。ドメイン名アドレス

を取得するために使用されます。Kaka で囲まれた 2 番目の場所に表示されます。最初の条件が確立されています。ただし、2 番目の条件が成立していないため、 $this->host

host メソッドに直接戻ります。

## 前の手順で取得した #Print
$this->hostThinkPHP ルーティング パラメーターとリソース ルーティング分析 ですが、なぜ 2 回実行されるのかについては説明しません。ご不明な点がございましたら、関数を使用してください。
debug_backtrace
を確認してください。

#印刷結果デフォルトのドメイン名を初期化するメソッドがすぐに実行されます

つまり、ここでドメイン名が初期化されますThinkPHP ルーティング パラメーターとリソース ルーティング分析
ThinkPHP ルーティング パラメーターとリソース ルーティング分析
デフォルトのドメイン名メソッドの初期化

この時点でもまだ疑問がありますが、それは明らかに thinkphp/library/think/route/Resource です。 php クラス内で実行されます。

ドメイン名アドレスの設定はクラス thinkphp/library/think/Route.php にあります!

これは考えてみればすぐにわかりますが、それは相続関係によるものです!

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
thinkphp/library/think/route/Resource.php

この時点では、このドメイン名の設定は非常に明確になっているはずです。わかりません。Kaka が書いた記事をもっと読んでください。

カカ 記事を書くのに数時間かかりますが、読むのに数分しかかかりません。数分で何が読めるでしょうか?

時間をかけてコードを作成してください。必要なのは効率ではなく品質です。

ここまででドメイン名を設定する場合の説明が終わりましたので、次にルーティング構成・アレイ構成について説明します

4. ルーティング構成- 配列構成の解釈

実際、これを読んで混乱する人も多いと予想されます。

ほとんどの人は、これが何を意味するのか、これがどこにあるのかを理解していません。

実際、この構成は 5.1 以降でのみ利用可能です。この構成は、Kaka の以前のバージョンには存在しません。

この構成の場所は、実際に調査してきたルート内にあります。予想外でした。それだけ強力なのです。

は、ルーティング設定の戻り値です。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ルーティング設定ファイル

ルーティング ファイルの読み込みを確認してみましょう。

最初はエントリーファイルですが、これについては間違いありません。

丸で囲ったところがAppのインスタンスを返します。わからない場合はコンテナに関する記事を読んでください。

したがって、このコード行は App クラスの run メソッドに対して実行されます。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
エントリー ファイル

次に、thinkphp/library/think/App.php に移動し、次の run メソッドを見てください。このクラス。

直接表示されるのは、初期化アプリケーションです。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析#初期化アプリケーション
初期化アプリケーションにアクセスすると、ルートの初期化について確認できます

ThinkPHP ルーティング パラメーターとリソース ルーティング分析ルート初期化
routeInitメソッド

#ルーティング設定をインポートする際に、ルーティング設定ファイルの配列構成に基づいて判定が行われます。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析ルーティング構成のインポート
この時点で、ルーティング構成がいつロードされるかをある程度理解しているはずです。

しかし、この文書にはアレイ モードでのルーティングの構成についての記述はありません。つまり、使用例がありません。

したがって、import メソッドに従って追跡する必要があります。

使い方を調べてください。

ここで、Kaka はコード行 $this->route->import($rules); について説明しています。

実際、$this->routeなぜ Route クラスが実行できるのでしょうか。

まず最初に知っておく必要があるのは、App クラスが Container クラスを継承しているということです。 Container クラスの終わり いくつかのマジック メソッドが存在します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
コンテナ マジック メソッド

この __get マジック メソッドは、アプリ内で存在しない Route クラスが呼び出されたときに実行されます。

次に、__get マジック メソッド内の make メソッドが実行されます。 ThinkPHP ルーティング パラメーターとリソース ルーティング分析
この方法については、Kaka が 3 回以上述べています。コンテナに関する記事を読むことができます。

コンテナ クラスの make メソッド

その後、行進を続けて、

thinkphp/library/think/Route.php
に到達します。構成ファイルのルーティング ルールをインポートします (メソッド ThinkPHP ルーティング パラメーターとリソース ルーティング分析import
)

このメソッドでは、いくつかのよく知られた変数ルールを確認できます。

次に、これらの値を簡単なテストに使用します。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
インポートされた構成ファイルを検出します。ルール

2 番目のセクションでリソース ルーティングについて説明しました。次に、リソース ルーティングのチェックを条件としてテストします。

以前に設定したリソースを必ず設定してください。ルーティング構成が変更されます。オフにすると、テストは実行できません

ThinkPHP ルーティング パラメーターとリソース ルーティング分析
ルーティング設定ファイル

この時点で、アクセスを行います

はい、つまりこの方法では、非常に簡単に使用できます。

ThinkPHP ルーティング パラメーターとリソース ルーティング分析#アクセス結果
#実際、配列メソッドの構成ルーティングはリソース ルーティングと同じですが、実行順序 以上です

最終的に、ルーティング ルールはループを通じてリソース メソッドに渡されます

リソースが実行されますThinkPHP ルーティング パラメーターとリソース ルーティング分析
このメソッドも実行されます

リソース メソッドThinkPHP ルーティング パラメーターとリソース ルーティング分析
このセクションではここで簡単に説明します。重要なのは、一定の理解が必要であるということです。ルートの初期化の説明

そしてルーティング配列の使い方を学ぶメソッドの構成

このメソッドは、以前のバージョン 5.1 やリリースされたバージョン 6.0 ではあまり使用されませんでした。全く使われない

ここで言及したのは、ルーティングの初期化プロセスを確認し、アレイ構成のルーティングが何を行うのかを知るためです。

質問がある場合は、未解決のままにせずに解決する必要があります

以上がThinkPHP ルーティング パラメーターとリソース ルーティング分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート