ホームページ >php教程 >php手册 >ThinkPHP における M メソッドと D メソッドの具体的な違い

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

WBOY
WBOYオリジナル
2016-06-21 08:48:48998ブラウズ

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方式は実際の状況に応じて選択する必要があります。



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