ホームページ  >  記事  >  PHPフレームワーク  >  thinkphpルーティングとは何ですか

thinkphpルーティングとは何ですか

青灯夜游
青灯夜游オリジナル
2021-12-27 11:49:484512ブラウズ

thinkphp では、ルーティングとは、URL に従って対応するハンドラーに割り当てられるマッピングを指します。その機能は、URL アクセス アドレスを単純化し、定義されたルーティング タイプに従って正しい解析を行うことです。簡単に言えば、ルーティングはパスの解析であり、クライアントによって送信されたパスに従って、リクエストは対応するモジュール、コントローラー、またはメソッドに解析されます。

thinkphpルーティングとは何ですか

このチュートリアルの動作環境: Windows 7 システム、thinkphp v5.1 バージョン、Dell G3 コンピューター。

ThinkPHP5 のルーティング機構を勉強してみましょう。

TP5 の完全な開発マニュアルではルーティングについて非常にわかりやすく説明されていますが、この記事ではまだ TP5 のルーティングが何であるかを勉強します。結局のところ、本を読むよりもブログを読んだ方が気楽です。

まずは 3 つの質問をしてください:

1. Route (ルーティング) とは何ですか?

Route (ルート) は、URL に基づいて対応するハンドラーに割り当てられたマッピングを指します。

簡単に言えば、これはパス分析であり、クライアントから送信されたパスに従って、リクエストが対応するモジュール/コントローラー/メソッドに解析されます。

公式ドキュメントは次のように定義されています=>ルーティングの役割は、URL アクセス アドレスを単純化し、定義されたルーティング タイプに基づいて正しい解析を行うことです。

マニュアルの説明: 通常、習慣に従って ThinkPHP プロジェクトにアクセスする場合、通常の URL は次のように記述する必要があります (ローカルの例) http:// localhost/project name/public/index.php/モジュール名/コントローラ名/メソッド名

URL の文字列を入力した後、非常に絶望的な気分になるでしょう、(ささやき) = > " 「アドレスの長いリストを入力できる小さなインターフェイスをテストしたいのですが、アドレスが長すぎて思い出せません...」現時点では、ルーティングを使用してアドレスを簡素化し、アドレスを短縮しながらいくつかのルールを定義できます。

2. ルーティングを使用する理由

「道を簡素化するため」と口走る人もいるかもしれません。 もちろんそれも理由の一つではありますが、理由はそれほど単純ではありません。

パスを簡略化したのが大きな理由で、最初はパスが長すぎると思って駆け寄ってオンにしていましたが、後で使用する過程で、ルートの役割. 実際、それは単純化されたパスに限定されません。

ルートの強制使用を有効にして、誰もが私が定義したルート経由でのみアクセスできるようにすることができます。これには、ユーザーに使用させたくないコントローラーを作成できるという利点があります。アクセス スクリプト。強制的に使用するために完全なルーティングを有効にすると、ユーザーはこれらのスクリプトにアクセスできなくなります。そうでないと、ユーザーがこれらのスクリプトにアクセスし、そのスクリプトがデータベースを変更する場合があり、より危険になります。

また、このパスからの取得操作であるかポスト操作であるかを定義できるため、以前のような状況は発生しません。 get 操作からも取得できます。アクセスもできますし、post にもアクセスできます。これは非常にわかりにくいです。もちろん、get と post の両方にアクセスできれば大したことではないという人もいるでしょう。実際には、 Restful API のアイデアを具体化するには、これらのメソッドを区別する方が便利です。

同様に、http と https の規制については説明しません。

この時点で、ルーティングはちょっと魔法のようだと思いませんか? ルーティングによって非常に多くのことができることがわかったので、その使用方法を勉強してみましょう。

Route の使用

使用する前に、まず構成情報を理解しましょう。これはまだ私のフォーク プロジェクトです。開いてください。設定ファイル:


#注意すべき点が 2 つあります。まず、最初のファイル内にあります。赤いボックス デフォルトでは、tp はルーティング モードをオンにします。2 番目の赤いボックスでは、tp はデフォルトでルーティングの強制使用をオフにします。これは何を意味しますか?現在でも通常のアドレスモードで正常にアクセスできますし、ルーティング経由でも正常にアクセスできます。

通常、プロジェクトを実行するときは、安全上の理由からこれを true に変更します。そのため、その効果を見てみましょう。

将来の状況強制ルーティングをオンにする:


通常のアドレスによるアクセスは成功する可能性があるので、ここで強制ルーティングをオンにしましょう:


同じアドレスがエラーを報告し、ルートが見つからないというエラーをスローしました。ルーティング ファイルでこのルートを定義していなかったため、エラーがスローされました。これは、ルーティングの使用が強制されるようになりました。

それでは、今それを定義しましょう。まず、最も単純なものから始めましょう:


ルート ファイルを見つけます


#まず、think の下にルーティング クラスを導入し、その中で get static メソッドを呼び出します。メソッド名から、これが get を通じてアクセスされることが簡単にわかります。では、最初と 2 番目のパラメーターは何を表しているのでしょうか? 2 番目のパラメーターは通常の URL のモジュール/コントローラー/メソッドを表し、最初のパラメーターは後続のモジュール/コントローラー/メソッドを置き換えるのに使用する名前を表します。

つまり、コントローラー メソッドにアクセスするために最初は http://localhost/xx/public/index.php/xx/test/xx を使用していましたが、現在は http://localhost/xx のみが必要です。 /public/index.php/xx はコントローラー メソッドにアクセスできます。

効果を見てください:


ルーティング アクセスが正常に使用されました。次に、このルールの定式化を詳しく見てみましょう (たとえば、 、get と post アクセスの違い)

ここで、get メソッドを post メソッドに変更し、get メソッドを使用してアクセスし、何が起こるかを確認します。




アクセスできない get を使用していることがわかります。アクセスできるのは post のみです。ルーティングは楽しい場所だと思いますか?

さらに詳しくは、次のようにルートを定義することもできます。


3 番目のパラメータは、ここで定義したものと同様に、アクセス方法を表します。フォームは get 操作と post 操作の両方にアクセスできます。最後のパラメータは https プロトコルをチェックするかどうかを表します。false の場合、https はチェックされません。true の場合、http を使用して http を使用するときにそれを見つけることができません。このようにして、インターフェースのセキュリティをさらに確保できます。効果については、実証しません。

詳細

ルーティングに関する他に特別な点は何ですか?ルーティングでは、get オペレーションによって渡されたパラメータを URL にマージすることもできます。元の get オペレーションは次のようになります。 id=1. ルーティング後、url/1 として定義できます。この方法では、id パラメータさえも非表示になります。その利点は誰もが知っています。プロセスについては、開発マニュアルにアクセスして検索するだけです。

もちろん、ルーティングには、クロージャ関数などの他の補助関数もあります。この補助関数は開発プロセスではあまり重要ではないため、1 つずつ紹介しません。興味があれば、完全な開発マニュアルにアクセスして読むことができます。

ここでは、ルーティングの関連概要と、ルーティングを使用する利点について説明します。

[関連チュートリアルの推奨事項:

thinkphp フレームワーク]

以上がthinkphpルーティングとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。