ホームページ > 記事 > PHPフレームワーク > thinkphp5と3の違い
まず最初に、この章は古いプロジェクトを 5.0 にアップグレードするためのガイドではなく、バージョン 3.X を使用している開発者が慣れて使い始めるためのものであることを述べておきます。この新しいバージョンはより高速です。同時に、5.0 はまったく新しい破壊的で再構築されたバージョンであるため、開発者には古い思考パターンを放棄することも強くお勧めします。
3.X 放棄する必要がある古いアイデア
URL の変更
最初にの緩さに関する誤ったガイダンスをお詫び申し上げます。$_GET に属さないものは、'param' を通じて取得できるようになりました。具体的な用途は、リクエスト部分を通じて問い合わせることができます。
モデルの変更点
モデル クエリの新しいバージョンはデフォルトの 'object' を返し、システムはデフォルトで 'toArray' メソッドを追加します。多くの開発者は ' all' または 'select' 'toArray' を使用して配列に変換してみてください。開発者が 'object' の概念を理解し、'object' を使用してデータを使用したり、'db' メソッドを使用して操作したりできることを願っています。 「toArray」を悪用する開発者にとって、「all」または「select」の結果はオブジェクトの配列コレクションとなり、「toArray」を使用して変換することはできません。
#新しいバージョンの変更点
命名規則
ディレクトリ名とファイル名には「小文字のアンダースコア」が使用されます, また、小文字で始まります。クラス ライブラリと関数ファイルの接尾辞は一律に .php です。クラス ファイル名は名前空間で定義され、名前空間のパスはクラス ライブラリ ファイルのパスと一致しています (大文字と小文字を含む)。 ); クラス名とクラス ファイル 名前は一貫している必要があり、キャメル ケースの名前付けを均一に使用する必要があります (最初の文字は大文字になります)関数
システムは依存しなくなりました。すべての関数で機能しますが、一般的に使用される操作のカプセル化関数のアシスタントのみを提供します。単一文字関数は放棄され、システムはデフォルトでアシスタント関数をロードします。詳細については、前の章「アシスタント関数」を参照してください。 routing5.0 URL アクセスは通常の URL モードをサポートしなくなり、ルーティングは通常のルーティング定義をサポートしなくなり、代わりに変数ルール (通常の定義) と組み合わせたルール ルーティングにすべて変更されます。詳細についてはここでは説明しません。
Controllerコントローラーの名前空間は調整されており、コントローラー クラスを継承する必要はありません。
アプリケーション クラス ライブラリの名前空間は、モジュール名ではなく app (変更可能) として統合されます。コントローラーのクラス名には、デフォルトではコントローラー サフィックスがありません。コントローラーを有効にするために、controller_suffix パラメーターを構成できます。クラスサフィックス; コントローラの操作メソッド データを直接出力する代わりに return メソッドを使用する; 元々の操作前メソッドと操作後メソッドを廃止;
バージョン比較
3.2 バージョン コントローラの記述方法<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller
{ public function hello()
{ echo 'hello,thinkphp!';
}
}
namespace app\index\controller;class Index
{ public function index()
{ return 'hello,thinkphp!';
}
}
IndexController.class.php
5.0 バージョン コントローラーの名前付け##Index.php
**正しいコントローラにテンプレートを出力**
5.0 はコントローラにテンプレートを出力します。使用方法は次のとおりです:
think\Controller を継承すると、次のように使用できます:
return $this->fetch('index/hello');If コントローラー think\Controller を継承しない場合は、次を使用します。
return view('index/hello');Model
旧バージョンからの改良点として、モデルをデータベースに分割し、モデルとバリデータの3つの部分がそれぞれM法、モデル、自動検証に対応し強化されています。
データベース5.0のデータベースクエリ機能が強化され、本来モデル経由で使用する必要があったチェーンクエリが呼び出せるようになりました。 Db クラスを介して直接 M 関数呼び出しでは、代わりに db 関数を使用できます (例:
3.2 versionM('User')->where(['name'=>'thinkphp'])->find();5.0 version
db('User')->where('name','thinkphp')->find();モデル
モデル クエリの新しいバージョンでは、次のような静的メソッドが追加されています。
User::get(1); User::all();User::where('id','>',10)->find();モデル部分には多くの機能が強化されています。詳細については、「モデルの章」を参照してください。詳細。
#自動検証
旧バージョンと比較すると、以前の自動検証とは異なるものとして理解できます。ThinkPHP5.0 検証は、検証に独立した \think\Validate クラスまたはバリデータを使用します。モデルに適用できるだけでなく、コントローラーで直接呼び出すこともできます。具体的な使用方法については、「検証」の章を参照してください。ルールについてはここでは説明しません。
構成ファイル
新しいバージョンには、以前とは異なる多くの構成パラメータまたは構成レベルが含まれています。コードを確認するか、公式の開発マニュアルを注意深く読み、構成の問題で丸一日を無駄にしないでください。 ############異常な######### 5.0 ではエラーに対する許容度がゼロです。デフォルトでは、あらゆるレベルのエラーに対して例外がスローされ、デバッグを容易にするために詳細なエラー情報を表示するように例外ページが再設計されました。 システム定数の破棄 以前のバージョンと比較して、5.0 バージョンではシステムの変更が多数破棄されています。定義 廃止された定数は次のとおりです 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 etc. 一部の定数はリクエストで取得できます。「リクエスト編」を参照してください。 注: もう一度言いますが、この章は、以前にバージョン 3.X を使用していた開発者が 5.0 をすぐに理解できるようにするためにのみ書かれています。5.0 の特定の機能については、開発者がマニュアルをよく読む必要があります。 #アシスタント機能
以上がthinkphp5と3の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。