M法とD法の違い
ThinkPHP では、M メソッドと D メソッドの両方を使用してモデル クラスをインスタンス化します。M メソッドは基本モデル クラスを効率的にインスタンス化するために使用され、D メソッドはユーザー定義のモデル クラスをインスタンス化するために使用されます。
M メソッドを使用する
次のような状況が発生した場合は、M メソッドの使用を検討してください:
複雑なビジネス ロジックを使用せずにデータ テーブルに対して単純な CURD 操作を実行する場合
個々のテーブルにのみより複雑なビジネス ロジックがある場合は、インスタンス化された CommonModel クラスと組み合わせて M メソッドを使用します
M メソッドは、パラメーター テーブル名に対応するデータ テーブルの操作を単純に調べることもできます:
$ユーザー = M('ユーザー')
D メソッドを使用する
次の状況が発生した場合は、方法 D の使用を検討してください:
自動検証機能 (create() メソッドで実装) や関連モデルなど、ThinkPHP モデルのいくつかの高度な機能を使用する必要があります。
ビジネス ロジックは複雑で、多くのテーブルが含まれます
ビジネス ロジックはカスタム モデル クラス (Lib/Model ディレクトリの下) で定義されており、これらのビジネス ロジックをオペレーションに実装したいと考えています
さらに、D メソッドはプロジェクト間の呼び出しをサポートしていないため、以下を使用する必要があります:
$User = D('User', 'Admin'); // Admin プロジェクトで User モデルをインスタンス化します $User = D('Admin.User') // プロジェクトのグループ化が有効になります
ヒント
プロジェクトのグループ化が有効になった後、Model クラスは必ずしもプロジェクトのグループ化に対応するとは限りません。複数のプロジェクト グループ間で共有されるモデル クラスは Model ディレクトリに配置され、D('ModelName') を使用して直接インスタンス化できます。また、D('User.UserInfo') は、User がプロジェクト グループである必要があるという意味ではありません。D('User.UserInfo') は、User ディレクトリに UserInfo モデルをインスタンス化します。親切。
概要
モデル クラス ファイルが存在しない場合は、M メソッドと D メソッドの両方を直接使用できます。明らかに M メソッドの方が効率的ですが、モデル クラスでビジネス ロジックを使用するには、D メソッドを使用する必要があります。
より鮮明な比喩は次のとおりです。方法 M は、オペレーティング システムをインストールしたばかりで、いくつかの基本的な機能しか使用できないコンピューターに似ています。方法 D は、インストールされたシステムに Office や QQ などのアプリケーション ソフトウェアをインストールするようなものです。より強力になり、コンピュータ全体の動作が遅くなります。
上記はM方式とD方式の違いをまとめたものです。M方式とD方式は実際の状況に応じて選択する必要があります。