thinkphp では、D メソッドはインスタンス化されたモデル オブジェクトを返すことができます。 D メソッドは、カスタム モデル クラスをインスタンス化するために使用されます。これは、ThinkPHP フレームワークによるモデル クラスのインスタンス化のカプセル化です。構文は、「D('[project://][group/]model','モデル層名」です。 ')"、戻り値はインスタンス化されたモデル オブジェクトです。
このチュートリアルの動作環境: Windows 7 システム、thinkphp v5.1 バージョン、Dell G3 コンピューター。
D メソッドは、最も一般的に使用されるメソッドです。これは、カスタム モデル クラスをインスタンス化するために使用されます。これは、ThinkPHP フレームワークによるモデル クラスのインスタンス化のカプセル化です。また、シングルトン モードを実装し、クロスプロジェクトをサポートします。
D('[项目://][分组/]模型','模型层名称')
D メソッドの戻り値は、インスタンス化されたモデル オブジェクトです。
D メソッドはモデル クラスを自動的に検出できます。カスタム モデル クラスが存在する場合はカスタム モデル クラスがインスタンス化され、存在しない場合はモデルの基本クラスがインスタンス化されます。渡されたモデルは繰り返しインスタンス化されません。
D メソッドの最も一般的な使用法は、現在のプロジェクトのカスタム モデルをインスタンス化することです。例:
// 实例化User模型 $User = D('User');
は、次の Lib/Model/UserModel.class.php ファイルをインポートします。現在のプロジェクトにアクセスし、UserModel クラスをインスタンス化します。そのため、実際のコードは次と同等になります。
import('@.Model.UserModel'); $User = new UserModel();
D メソッドは、グループやプロジェクト全体でのモデルのインスタンス化をサポートできます。例:
//实例化Admin项目的User模型 D('Admin://User') //实例化Admin分组的User模型 D('Admin/User')
バージョン 3.1 では、階層モデルのサポートが追加されたため、D メソッドは他のモデルをインスタンス化することもできます。たとえば、
// 实例化UserService类 $User = D('User','Service'); // 实例化UserLogic类 $User = D('User','Logic');
D('User','Service');
は Lib/Service/UserService.class.php をインポートしてインスタンス化します。
拡張知識: D と M の主な違いは、
M メソッドはモデル クラス ファイルを作成する必要がありません。M メソッドは、モデル クラスであるため、デフォルトでは自動検証は無効ですが、動的割り当てを通じて実現できます
D メソッドはモデル クラスを作成する必要があります。
次の 2 つのメソッドを使用して、データ テーブルのマッピング オブジェクトを作成できます。
最初のメソッド:$Test = D('Test')
2 番目のタイプ: $Test = new Model('Test')
どちらもデータに対して選択、挿入、削除、更新操作を実行できますが、
データ検証には大きな違いがあります。
最初の方法でモデルをインスタンス化するとデータチェック機能が付きます。タイトルが未入力の場合は「タイトルを入力してください」と表示されます。 (これは自動検証機能を提供します。もちろん、検証条件は対応するモデルで定義する必要があります);
2 番目のタイプを使用する場合、このデータ検証機能はありません。手動で確認します。
概要は次のとおりです:
D 関数は、現在のプロジェクトの Lib/Model の下にモジュールをインスタンス化します。
モジュールが存在しない場合は、インスタンス化したModelのオブジェクトを直接返します(意味はM()関数と同じです)。
そして、M はモデルをインスタンス化するオブジェクトのみを返します。その $name パラメータは、データベースに対する操作を処理するためのデータベースのテーブル名として使用されます。
平たく言えば:
D は、モデル ファイルに基づいてモデルをインスタンス化することです。
M は、対応する Model ファイルが存在しない場合でも、Model メソッド (ThinkPHP 基本クラス) を直接インスタンス化することにより、Model オブジェクトを動的にインスタンス化します。
もっと簡単に言うと、
M インスタンス化パラメータはデータベースのテーブル名です。
D は、Model フォルダーの下に作成したモデル ファイルをインスタンス化します。
D は、モデルを定義しない場合、システムが自動的にモデルを定義して、簡単なデータの入力または出力を実行できることを意味します。
各アクション ファイルはモデル ファイルに対応する必要があります。モデルを定義する場合は、
例: $Form = D ("User")
は $Form = new UserModel();
(User はモデル ファイル名を指します) に変更できます。
[関連チュートリアルの推奨事項: thinkphp フレームワーク]
以上がthinkphp D メソッドが返す内容の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。