ホームページ >PHPフレームワーク >ThinkPHP >thinkphp3.2と5.0の違いは何ですか?

thinkphp3.2と5.0の違いは何ですか?

青灯夜游
青灯夜游オリジナル
2022-02-14 17:41:272022ブラウズ

相違点: 1. 3.2 は通常の URL パターンと通常のルーティング定義をサポートしますが、5.0 はサポートしません; 2. 5.0 は要求オブジェクト Request と応答オブジェクト Response を追加します; 3. 5.0 はエラーに対する許容度がゼロですが、3.2バージョン 4.5.0 では、元の定数定義のほとんどが放棄され、フレームワークのパス定数定義のみが保持されました。

thinkphp3.2と5.0の違いは何ですか?

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

thinkphp5.0 と thinkphp 3.2 の違い

5.0以前のバージョンとの間には大きな違いがあります。この記事は次のとおりです。 3.2 に精通している バージョンのユーザーは、5.0 の主な違いをいくつか挙げています。

URL とルーティング

##5.0 URL アクセスは、通常の URL モード、ルーティングをサポートしなくなりました。また、通常のルーティング定義はサポートされていませんが、すべてが変数ルール (通常の定義) を使用したルール ルーティングに変更されます。

主な改善点は次のとおりです。

    ルーティング変数ルールを追加します。
  • 組み合わせ変数サポートを追加;
  • リソース ルーティングを追加;
  • ルーティング グループ化を追加;
  • クロージャ定義サポートを追加;
  • MISS を追加ルーティング定義;
  • URL ルーティング ルールのアンチ解析のサポート;

#リクエスト オブジェクトとレスポンス オブジェクト #5.0

リクエスト オブジェクト

Request とレスポンス オブジェクト Response を追加しました。Request は、リクエストを均一に処理し、リクエスト情報を取得します。Response オブジェクトクライアントまたはブラウザーの応答を出力する責任があります。

モジュールとコントローラー

コントローラーの名前空間は調整されており、コントローラー クラスを継承する必要はありません。

アプリケーションの名前空間はモジュール名ではなく

app
    (定義可能) に統一されます;
  • コントローラーのクラス名には Controller は含まれません## デフォルトでは #Suffix を有効にするように構成できます
  • use_controller_suffix
  • パラメータによりコントローラ クラスのサフィックスが有効になります; コントローラの操作メソッドは return メソッドを使用してデータを返します直接出力の代わりに;
  • 元の操作前および操作後のメソッドを廃止;
  • beforeActionList
  • 属性を追加して事前操作を定義;
  • あらゆるレベルの操作をサポートコントローラーの定義とアクセス;URL アクセスはコントローラーの自動配置をサポートします;
  • #データベース

5.0データベース クエリ関数が強化されましたが、元々はモデルが必要でした。使用されるチェーン クエリは、Db クラスを通じて直接呼び出すことができます。元の MM 関数呼び出しは、# を使用するように変更できます。 ##db

関数、例:

3.2 バージョン

M('User')->where(['name'=>'thinkphp'])->find();
5.0 バージョン

db('User')->where('name','thinkphp')->find();
主な改善点は次のとおりです:

チェーン クエリ操作をサポートします。データ クエリは、オブジェクト、配列、および

PDOStatement

オブジェクトを返すことをサポートします。

    データ セット クエリ戻り配列と
  • Collection
  • オブジェクトをサポート;
  • クエリ コンストラクターの追加、クエリ構文の変更;
  • クロージャ クエリをサポート;
  • ブロック クエリをサポート;
  • はビュー クエリをサポートします。
  • は SQL リスニング イベントを追加します。 ;
  • モデル

5.0 は最も大きなモデル変更があります。基本的に、モデルは完全にオブジェクト指向です。コンセプトは、関連モデルも含めてです。モデル クラスのサフィックスには Model が含まれなくなりましたが、名前空間によって直接区別されます。元の #D

関数呼び出しは

model 関数に変更され、対応するモデル クラスを作成する必要があります。例: 3.2 version

D('User')->where(['name'=>'thinkphp'])->find();
5.0 バージョン

model('User')->where('name','thinkphp')->find();
主な改善点は次のとおりです。

関連付けモデルを再構築します。集計モデルをサポートします。

ビュー モデルを廃止 (データベースのビュー クエリ メソッドに変更);

    モデルの拡張機能は
  • Trait
  • メカニズムを採用;
  • ゲッターを追加および修飾子;
  • タイムスタンプの自動書き込みを追加;
  • 型フィールド変換を追加;
  • 配列アクセスのサポート;
  • JSON シリアル化のサポート;
  • ##自動検証とオートコンプリート
  • 5.0 の自動データ検証と自動補完は、バージョン 3.2 とは大きく異なります。5.0 のデータ検証では、バリデータ定義を実行し、
think\Validate

クラスを通じて統合検証を実行します。自動補完は、モデル内で修飾子を定義することによって実現されます。 例外

5.0

エラーに対するゼロ許容度。デフォルトでは、あらゆるレベルのエラーに対して例外がスローされます (ただし、エラー レベルはアプリケーションのパブリック ファイルで設定できます)。例外ページはデバッグを容易にするために詳細なエラー情報を表示するように再設計されました。 デバッグとログ

5.0

ページ Trace がブラウザ コンソールの View Trace をサポートするように強化されました情報。

5.0

のログ ドライバーは、Socket メソッドを追加し、SocketLog を使用してリモート デバッグをサポートします。 ############絶え間ない#########

5.0版本废弃了原来的大部分常量定义,仅仅保留了框架的路径常量定义,其余的常量可以使用App类或者Request类的相关属性或者方法来完成,或者自己重新定义需要的常量。

废除的常量包括:

REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_DEBUG MODULE_PATH

函数

5.0版本核心框架不依赖任何自定义函数,但仍然封装了一些常用功能到助手函数,你可以随意重新定义或者增加助手函数。

【相关教程推荐:thinkphp框架

以上がthinkphp3.2と5.0の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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