ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP の M ステップと D メソッドの具体的な違い

ThinkPHP の M ステップと D メソッドの具体的な違い

WBOY
WBOYオリジナル
2016-06-13 12:35:45757ブラウズ

ThinkPHP

における M メソッドと D メソッドの具体的な違い M法とD法の違い

ThinkPHP では、M メソッドと D メソッドの両方を使用してモデル クラスをインスタンス化します。M メソッドは基本モデル クラスを効率的にインスタンス化するために使用され、D メソッドはユーザー定義のモデル クラスをインスタンス化するために使用されます。

M メソッドを使用します

次のような状況が発生した場合は、M メソッドの使用を検討してください:

  1. 複雑なビジネス ロジックを使用せずにデータ テーブルに対して単純な CURD 操作を実行する場合
  2. 個々のテーブルのみに複雑なビジネス ロジックがある場合は、インスタンス化された CommonModel クラスと組み合わせて M メソッドを使用します

M メソッドは、パラメーター テーブル名に対応するデータ テーブルの操作を単純に調べることもできます:

$User = M('User'); 

D メソッドを使用します

次の状況が発生した場合は、方法 D の使用を検討してください:

  1. 自動検証機能 (create() メソッドで実装) や関連モデルなど、ThinkPHP モデルのいくつかの高度な機能を使用する必要があります。
  2. ビジネス ロジックは複雑で、多くのテーブルが含まれます
  3. ビジネス ロジックはカスタム モデル クラス (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 方式は実情に応じて選択してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。