D() メソッドと M() メソッドの違い:
D と M の主な違いは、
M メソッドはモデル クラス ファイルを作成する必要がないため、M メソッドはモデル クラスを読み取らないことです。自動検証はデフォルトでは無効ですが、動的代入
によって実現でき、D メソッドはモデル クラスを作成する必要があります。
次の 2 つのメソッドを使用して、データ テーブルのマッピング オブジェクトを作成できます
最初のメソッド: $Test = D('Test')
2 つ目のメソッド: $Test = new Model('Test')
どちらもデータの選択、挿入、削除、更新操作を実行できますが、
データの検証に大きな違いがあります。最初の方法でモデルを導入すると、タイトルにデータ チェック機能が追加されます。入力時に「タイトルを入力してください」と表示されます (これは tp が提供する自動検証機能です。もちろん、検証条件は対応するモデルで定義する必要があります)。2 番目のタイプを使用する場合は、このデータ検証機能はありません。手動検証が必要です。
概要は次のとおりです:
D 関数は、現在のプロジェクトの Lib/Model の下にモジュールをインスタンス化します。
モジュールが存在しない場合は、インスタンス化したModelのオブジェクトを直接返します(意味はM()関数と同じです)。そして M はインスタンス化された Model のオブジェクトのみを返します。その $name パラメータは、データベースに対する操作を処理するためのデータベースのテーブル名として使用されます。
平たく言えば、
D はモデル ファイルに基づいてモデルをインスタンス化することです。
M は、対応する Model ファイルが存在しない場合でも、Model メソッド (ThinkPHP 基本クラス) を直接インスタンス化することにより、Model オブジェクトを動的にインスタンス化します。
もっと簡単に言うと、
M インスタンス化パラメータはデータベースのテーブル名です。
D は、Model フォルダーの下に作成したモデル ファイルによってインスタンス化されます。
すべてのアクション ファイルはモデル ファイルに対応する必要があります。
例: $Form = D("User") を $Form = new UserModel(); に変更できます (User はモデル ファイル名を指します)。 )。