インスタンス化のプロセスでは、D メソッドと M メソッドがよく使用されます。これら 2 つのメソッドの違いは、M メソッドはユーザーがそれぞれのモデル クラスを定義せずにモデルをインスタンス化することです。 D メソッドが定義されたモデル クラスを見つけられない場合、M メソッドが自動的に呼び出されます。平たく言えば、M インスタンス化パラメータはデータベースのテーブル名です。 D は、Model フォルダーの下に作成した モデル ファイルをインスタンス化します。
例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于 $Demo = M();
D と M の主な違いは です。M メソッドではモデルの作成が必要ありません。 class ファイルでは、M メソッドはモデル クラスを読み取らないため、自動検証はデフォルトでは無効ですが、動的代入によって実現でき、D メソッドはモデル クラスを作成する必要があります。データ テーブルのマッピング オブジェクトを作成するには、次の 2 つのメソッドを使用できます。1 つ目は $Test = D('Test') 2 つ目は、$Test = new Model('Test') です。ただし、どちらも可能です。マップ データ 選択、挿入、削除、および更新操作の実行は、データ検証とは大きく異なります。最初の方法を使用してモデルをインスタンス化すると、データ チェック機能が追加されます。タイトルが入力されていない場合は、「タイトルを入力してください」というプロンプトが表示されます。 (これはtpが提供する自動検証機能です。もちろん、該当機種で検証条件を定義する必要があります); 2番目のタイプを使用すると利用できなくなります...もう1つの違いがあります。 $trueTableName が使用されます。$test=d('test') を使用することは、クエリがテスト テーブルであることを意味します。$test=m('test') が使用される場合、クエリのデータ側が think_test であることを意味します。 。 thinkphp2.0 のバージョン テストには上記の問題があります。
平たく言えば : D は、Model ファイルに基づいて Model をインスタンス化することです。 M は、対応する Model ファイルが存在しない場合でも、Model メソッド (ThinkPHP 基本クラス) を直接インスタンス化することで、Model オブジェクトを動的にインスタンス化します。
#A は、Action クラス ライブラリを迅速にインスタンス化します。 B は、動作クラスを実行します。 C 設定 パラメータ アクセス メソッドD モデルクラスライブラリの高速インスタンス化 F 高速かつシンプルなテキストデータアクセスメソッド L 言語パラメータアクセスメソッド M 高速高パフォーマンスインスタンス化モデル R 高速リモート呼び出しアクションクラスメソッド S 高速キャッシュアクセスメソッド U URL 動的生成およびリダイレクトメソッド W および高速ウィジェット出力メソッド D 関数は、現在のプロジェクトの Lib/Model の下にモジュールをインスタンス化します。モジュールが存在しない場合は、インスタンス化されたModelのオブジェクトが直接返されます(意味はM()関数と同じです)。そして、M はモデルをインスタンス化するオブジェクトのみを返します。その $name パラメータは、データベースに対する操作を処理するためのデータベースのテーブル名として使用されます。 ThinkPHP 関連の技術記事の詳細については、ThinkPHP 使用法チュートリアル 列にアクセスして学習してください。
以上がthinkphp mとdの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。