ThinkPHP のショートカット メソッド D と M の違い
簡単に言うと、M メソッドを使用する場合、対応するモデルクラスを定義する必要はありません(定義されていても読み込まれません)。通常、このようなモデルは、システムの基本モデル クラス Model クラスの一部のメソッドのみを呼び出すことができます。 D メソッドを使用してモデルをインスタンス化する場合は、対応するモデル クラス ファイルが必要です。さらに、いくつかのモデルのカスタム メソッドまたは属性を呼び出すことができます。 対応 ファイル内に自動検証や関数などのビジネスロジックがある場合は、D も使用する必要があります。
別の例として、M は、システムに付属のアプリケーションのみを備えた新しくインストールされたオペレーティング システムです 自分でインストールしたアプリケーションはありません (したがって、組み込みの Model によって提供されるプロパティとメソッドのみを呼び出すことができます) D 多くのサードパーティ アプリケーションがインストールされています 使用方法は豊富ですが (モデル クラスで定義されたプロパティとメソッドを呼び出すことができます)、明らかに多くのサードパーティ製アプリケーションをインストールすると、システムのパフォーマンスが低下し、実行が遅くなりますが、機能は明らかに強力です。
?
Dメソッド は、モデル オブジェクトのインスタンスを迅速に 作成し、それらをシングルトン化するために使用されます 、例:
$User = D("ユーザー"); は
と同等です $User = new UserModel();
?
m
インスタンス化パラメータはデータベース のテーブル名です。
d は、
model フォルダーの下に作成したモデル ファイル . をインスタンス化します。
?
D
と M の主な違いは次のとおりです: M
メソッドはモデル クラス ファイルを作成する必要はありません。M メソッドはモデル クラスを読み込まないため、デフォルトでは自動検証は無効です。 によって動的に実装できます。
Dメソッドはモデル クラスを作成する必要があります。次の 2 つのメソッドを使用して、データ テーブル のマッピング オブジェクトを作成できます。 最初のタイプ:
$Test = D('Test')2 番目のタイプ:
$Test = new Model('Test')どちらもデータに対して
選択、挿入、削除、更新操作を実行できますが、最初の方法を使用してモデルをインスタンス化する場合には、データ検証に大きな違いがあります。データチェック機能。 タイトル が入力されていない場合、 「タイトル を入力してください」 が表示されます (これは tp が提供する自動機能です) 検証関数は、対応する モデル) で検証条件を定義する必要もあります。 D メソッドはモデル クラスを自動的に検出でき、モデル クラスが存在しない場合は例外をスローします。同時に、インスタンス化されたモデルは繰り返しインスタンス化されません (単一のケース)。
デフォルトの D
メソッドは、現在のプロジェクト (またはアプリケーション) でのモデルの呼び出しのみをサポートします。 ?
例: $user = new UserModel();
は $user = D('user');
と同等です。 ?
空のモデルがインスタンス化された場合
例: $Demo = new Model();
この場合、 $Demo = M();
と同等になります。