ホームページ PHPフレームワーク ThinkPHP ThinkPHP5.2: ルーティングの調整と改善

ThinkPHP5.2: ルーティングの調整と改善

Dec 16, 2019 pm 03:10 PM
thinkphp5.2 ルーティング

ThinkPHP5.2: ルーティングの調整と改善

ThinkPHP5.2 のルーティング部分は、他のコンポーネントと同様に、主に次の点を含めて合理化および最適化されています。

ルートの復帰をキャンセルする定義配列形式

ルート キャッシュの生成には適さないため、ルート定義ファイルはルートを定義するために配列を返すメソッドをキャンセルし、ルーティング メソッドを使用してルートを登録する必要があります。ルート。

例:

return [
    'hello/:name' => 'index/hello',
];
ログイン後にコピー

を次のように変更する必要があります:

Route::get('hello/:name', 'index/hello');
ログイン後にコピー

複数のアプリケーションのルーティング定義ファイルの場所

シングルアプリケーションモードでは、ルート定義ファイルは従来通りルートディレクトリ配下にあります プロジェクトで複数のアプリケーションを使用する場合、各アプリケーションのルート定義とマッチングは独立しており、モジュールの概念はありません ルート定義ファイルの場所これは、route/application サブディレクトリの下にある必要があります。例:

route/index/route.php //  index应用的路由定义文件
route/index/web.php // index应用的第二个路由定义文件
route/admin/route.php //  admin应用的路由定义文件
ログイン後にコピー

デフォルトの URL ルールは

http://域名/入口文件(或者应用名)/控制器名/操作名
ログイン後にコピー

になります。アプリケーションのルーティング ルールは、実際には定義されたエントリ ファイルです。 (またはアプリケーション名の後の URL の一部)、アプリケーションを除きます。

自動マルチアプリケーション

最新バージョン 5.2 では、同じエントリ ファイル内の複数の異なるアプリケーションへのアクセスをサポートできます (以前は、対応するアプリケーションごとに 1 つ追加する必要がありました)エントリーファイル)。

たとえば、index.php エントリ ファイルで次のように使用します。

(new App())->autoMulti()->run()->send();
ログイン後にコピー

エントリ ファイルを作成せずに、URL を介して複数のアプリケーションに自動的にアクセスできます

http://serverName/index.php/admin
ログイン後にコピー

デフォルトのアプリケーションがインデックスではない場合 (デフォルトはエントリ ファイル名です)、name メソッドを使用してデフォルトのアプリケーションを指定できます。

(new App())->autoMulti()
    ->name('admin')
    ->run()
    ->send();
ログイン後にコピー

アプリケーション名のエイリアス マッピングをサポートします。例:

(new App())->autoMulti([
    'think'    =>    'admin',  // 把admin应用映射为think
])->run()->send();
ログイン後にコピー

アプリケーションをカスタマイズする必要がある場合は、

(new App())->autoMulti([
    'admin'    =>   function($app) {
        $app->debug(true)->useClassSuffix();
    }
])->run()->send();
ログイン後にコピー

を使用してエイリアス ルーティングをキャンセルできます

使用シナリオの制限とパフォーマンスのオーバーヘッドの問題により、元のエイリアス ルーティング機能はキャンセルされ、代わりにリソース ルーティングまたは別のルートを使用することをお勧めします。

ショートカットルーティングのキャンセル

利用シーンが限定的で仕様を満たしていないため、オリジナルコントローラーのショートカットルーティング機能はキャンセルされました。

空のコントローラと空の操作をキャンセル

元の空のコントローラと空の操作機能がキャンセルされました。代わりに MISS ルーティング機能を使用してください。別のルーティングをサポートできます。グループ化により、MISS ルーティングが設定されます。同時に、empty_controller 設定は破棄されます。

コントローラの自動検索のキャンセル

パフォーマンス上の理由により、マルチレベル コントローラのルーティングの自動検索機能がキャンセルされました。ルートを明確に指定してください。ルーティング ルール定義でルーティングされる マルチレベル コントローラー。

ルーティング関数は独立して設計されています

ルーティング関数は固定的に実行されなくなり、AppInit イベントの応答モニターとして設計されており、構成可能ですプロジェクトのイベント定義内 システムのデフォルト 定義と構成は次のとおりです:

return [
    'bind'      => [
    ],
    'listen'    => [
        'AppInit'      => [
            'think\listener\LoadLangPack',
            'think\listener\RouteCheck',
        ],
        'AppBegin'     => [
            'think\listener\CheckRequestCache',
        ],
        'ActionBegin'  => [],
        'AppEnd'       => [],
        'LogLevel'     => [],
        'LogWrite'     => [],
        'ResponseSend' => [],
        'ResponseEnd'  => [],
    ],
    'subscribe' => [
    ],
];
ログイン後にコピー

think\listener\RouteCheck クラスは AppInit イベントで実行されます。ルーティング機能をまったく使用しない場合は、設定ファイルの定義をキャンセルすることができ、システムはデフォルトの URL ディスパッチ (つまり、コントローラー/アクション) を実行します。

登録キャンセルメソッドのオプションおよびパターンパラメータ

ルート登録メソッドのキャンセル (rule/get/post/put/delete/patch/miss/group および他のメソッド) オプションとパターンのパラメーターはすべてメソッド呼び出し形式に変更されます。たとえば、元の

Route::get('hello/:name', 'index/hello', [ 'ext'  =>  'html'], [ 'name'  => '\w+']);
ログイン後にコピー

Route::get('hello/:name', 'index/hello')
    ->ext('html')
    ->pattern([ 'name'  => '\w+']);
ログイン後にコピー

に変更する必要があります。ルーティング グループ定義は廃止されました。配列をサポートします

グループの入れ子機能に適さないため、ルーティング グループ定義は配列をサポートしなくなり、クロージャを使用してのみ定義できます。例:

Route::group('blog', [
    ':id' => 'Blog/read',
    ':name' => 'Blog/read',
])->ext('html')->pattern(['id' => '\d+']);
ログイン後にコピー

は次のようになります。必要に応じて

Route::group('blog', function() {
    Route::get(':id', 'Blog/read');
    Route::get(':name', 'Blog/read');
})->ext('html')->pattern(['id' => '\d+']);
ログイン後にコピー

に変更します。 仮想ルーティング グループを登録するには、最初のパラメータでクロージャを直接使用できます。

Route::group(function() {
    Route::get('blog/:id', 'Blog/read');
    Route::get('user/:name', 'User/read');
})->ext('html')->pattern(['id' => '\d+']);
ログイン後にコピー

url_controller_layer 構成をキャンセルします。

代わりに、エントリ ファイル内のcontrollerLayerメソッド設定を使用してください。

(new App())->controllerLayer('Action')
    ->run()
    ->send();
ログイン後にコピー

class_suffix 構成をキャンセルします

代わりに、エントリ ファイルで useClassSuffix メソッドを使用します。

(new App())->useClassSuffix(true)
    ->run()
    ->send();
ログイン後にコピー

controller_suffix 構成パラメーターと class_suffix 構成パラメーターを同時にキャンセルします。

mergeExtraVars メソッドと対応するパラメーターをキャンセルします

代わりに、ルーティング ルールで変数ルールを明示的に指定します。

ヘッダー メソッドのパラメーターの型の調整

強い型の制約により、ヘッダー メソッドは配列パラメーターの受け渡しのみをサポートするように変更されました。

強い型パラメーターを使用する

強い型パラメーターが完全に有効になり、厳密モードが使用されるため、パラメーターの型に必ず注意してください。

多くの ThinkPHP 入門チュートリアル はすべて PHP 中国語 Web サイトにあります。オンラインで学習することを歓迎します。

この記事は https://blog.thinkphp.cn/916515

から転載しています。

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

NTP タイム サーバー エラーによるルーターの接続喪失を修正する 3 つの方法 NTP タイム サーバー エラーによるルーターの接続喪失を修正する 3 つの方法 May 22, 2023 pm 03:43 PM

接続と WiFi の問題は非常にイライラし、生産性が大幅に低下する可能性があります。コンピュータは、クロック同期にネットワーク タイム プロトコル (NTP) を使用します。すべてではないにしても、ほとんどの場合、ラップトップは NTP を使用して時間を追跡します。 NTP タイム サーバー エラー メッセージが原因でサーバーとの接続が失われた場合は、この記事を最後まで読んで修正方法を確認してください。ルーターの時刻が正しく設定されていない場合はどうなりますか?通常、ルーターのパフォーマンスは間違った時刻設定によって影響を受けないため、接続は影響を受けない可能性があります。ただし、いくつかの問題が発生する可能性があります。ルーターをローカル タイム サーバーとして使用するすべてのガジェットの時刻が正しくありません。ルーターのログ データのタイムスタンプが間違っています。のせいなら

Slim フレームワークで API ルーティングを実装する方法 Slim フレームワークで API ルーティングを実装する方法 Aug 02, 2023 pm 05:13 PM

Slim フレームワークで API ルーティングを実装する方法 Slim は、Web アプリケーションを構築するためのシンプルかつ柔軟な方法を提供する軽量の PHP マイクロフレームワークです。主な機能の 1 つは API ルーティングの実装で、これにより、さまざまなリクエストを対応するハンドラーにマッピングできるようになります。この記事では、Slim フレームワークで API ルーティングを実装する方法を紹介し、いくつかのコード例を示します。まず、Slim フレームワークをインストールする必要があります。 Slim の最新バージョンは Composer を通じてインストールできます。ターミナルを開いて、

Windows 11/10でインターネットセキュリティがない問題を修正する方法 Windows 11/10でインターネットセキュリティがない問題を修正する方法 May 11, 2023 pm 10:07 PM

Windows 11/10 コンピューターで見られるインターネット接続関連の問題の 1 つは、「インターネットがありません。安全です」というエラー メッセージです。基本的に、このエラー メッセージは、システムがネットワークに接続されているものの、接続の問題により Web ページを開いてデータを受信できないことを示します。 Windows のネットワークに接続しているとき、できれば近くにない WiFi ルーターを介してインターネットに接続しているときに、このエラーが発生することがあります。通常、システム トレイの右下隅にあるワイヤレス アイコンを確認すると、小さな黄色の三角形が表示され、それをクリックすると、「インターネットなし、セキュリティ」というメッセージが表示されます。このエラー メッセージが表示される特別な理由はありませんが、構成設定の変更によりルーターが接続できなくなる可能性があります。

Java Apache Camel: 柔軟で効率的なサービス指向アーキテクチャの構築 Java Apache Camel: 柔軟で効率的なサービス指向アーキテクチャの構築 Feb 19, 2024 pm 04:12 PM

Apache Camel は、異種のアプリケーション、サービス、データ ソースを簡単に統合して、複雑なビジネス プロセスを自動化できる Enterprise Service Bus (ESB) ベースの統合フレームワークです。 ApacheCamel はルートベースの構成を使用して、統合プロセスを簡単に定義および管理します。 ApacheCamel の主な機能は次のとおりです。 柔軟性: ApacheCamel は、さまざまなアプリケーション、サービス、データ ソースと簡単に統合できます。 HTTP、JMS、SOAP、FTP などの複数のプロトコルをサポートします。効率: ApacheCamel は非常に効率的で、大量のメッセージを処理できます。非同期メッセージング メカニズムを使用しているため、パフォーマンスが向上します。拡張可能

ThinkPHP6 でルーティングを使用する方法 ThinkPHP6 でルーティングを使用する方法 Jun 20, 2023 pm 07:54 PM

ThinkPHP6 は、URL ルーティング設定を簡単に実装できる便利なルーティング機能を備えた強力な PHP フレームワークであり、同時に GET、POST、PUT、DELETE などのさまざまなルーティング モードもサポートしています。この記事では、ThinkPHP6 を使用してルーティング設定を行う方法を紹介します。 1. ThinkPHP6 ルーティングモードの GET メソッド: GET メソッドはデータを取得するためのメソッドであり、ページの表示によく使用されます。 ThinkPHP6 では、次のものが使用できます。

iPhoneのWiFiが繰り返し切断される問題を修正する方法[解決済み] iPhoneのWiFiが繰り返し切断される問題を修正する方法[解決済み] May 20, 2023 pm 01:55 PM

多くの iPhone ユーザーは、iPhone で直面している深刻な問題の 1 つに対して失望を表明しています。問題は、iPhone が時々 Wi-Fi から切断されることです。 iPhone でほとんどのアプリを使用するには Wi-Fi が必須であるため、これは確かに大きな問題です。私たちはこの問題を徹底的に分析し、原因と考えられる要因を特定し、以下にリストしました。自動参加設定が無効になっている ネットワーク設定の一部の問題 Wi-Fi パスワードの変更 Wi-Fi ルーターの問題の変更 上記のこれらの要因を調査した後、Wi-Fi 問題 iPhone の切断問題を解決できる一連の解決策をまとめました。解決策 1 – Wi-Fi が有効になっていない場合は、Wi-Fi の自動接続設定をオンにする

ルーティングを使用して、ARP スプーフィングに対する防御、ブロードキャスト ストームの抑制、イントラネット ウイルスに対する防御を行うことはできますか? ルーティングを使用して、ARP スプーフィングに対する防御、ブロードキャスト ストームの抑制、イントラネット ウイルスに対する防御を行うことはできますか? May 22, 2023 am 08:52 AM

ここで挙げる路線は1000元以上の路線であり、1000元以下の路線については割愛します。最近の企業向けルータにはこのような機能が搭載されていると記載されていることが多いですが、そのような機能を実現するにはコンピュータがルータに直接接続されていることが前提であり、スイッチなどで切り離されてしまうとコンピュータにとってこれらの機能は役に立たなくなります。 LAN 内でのブロードキャスト ストームや ARP スプーフィングなどの問題は非常に一般的な問題であり、大きな問題ではありませんが、非常に迷惑です。ブロードキャスト ストーム、ARP スプーフィング、ネットワーク ループを解決するのは難しくありませんが、難しいのはこれらの問題を検出する方法です。私たちのシステムには「Buddha Nature」プラグインをお勧めします。なぜ「仏性」なのかというと、この検知機能はインターネット挙動管理とネットワーク監視データ分析の中核をベースにしており、インターネット挙動管理にしかできない機能であるためです。

ルーティングを使用して Vue プロジェクトでページ切り替えアニメーション効果をカスタマイズするにはどうすればよいですか? ルーティングを使用して Vue プロジェクトでページ切り替えアニメーション効果をカスタマイズするにはどうすればよいですか? Jul 21, 2023 pm 02:37 PM

ルーティングを使用して Vue プロジェクトでページ切り替えアニメーション効果をカスタマイズするにはどうすればよいですか?はじめに: Vue プロジェクトでは、ルーティングはよく使用する機能の 1 つです。ページ間の切り替えはルーティングを通じて実現でき、優れたユーザー エクスペリエンスを提供します。ページの切り替えをより鮮やかにするには、アニメーション効果をカスタマイズすることで実現できます。この記事では、ルーティングを使用して Vue プロジェクトでページ切り替えアニメーション効果をカスタマイズする方法を紹介します。 Vue プロジェクトの作成 まず、Vue プロジェクトを作成する必要があります。 VueCLI を使用して迅速にビルドできます

See all articles