ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP 機能の詳細説明: M ステップ

ThinkPHP 機能の詳細説明: M ステップ

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

ThinkPHP 関数の詳細な説明: M メソッド

M メソッドは、基本的なモデル クラスをインスタンス化するために使用されます。D メソッドとの違いは次のとおりです。
1. モデル クラスをカスタマイズする必要がなく、IO 負荷が軽減されます。
2. インスタンス化後に呼び出せるのは、基本モデル クラスのメソッドのみです。
3. インスタンス化中にテーブルのプレフィックス、データベース、およびデータベース接続情報を指定できます。
D メソッドの能力は、カプセル化するカスタム モデル クラスの強力さに反映されます。ただし、ThinkPHP フレームワークの新しいバージョンの基本モデル クラスがますます強力になるにつれて、M メソッドもますます強力になっています。 D メソッドよりも実用的です。
M メソッド呼び出し形式:
M('[基本モデル名:]モデル名','データテーブルプレフィックス','データベース接続情報')
見てみましょう
1. 基本モデル (Model) クラスをインスタンス化します。

モデルが定義されていない場合、次のメソッドを使用してモデルをインスタンス化できます。操作するクラス:

//实例化User模型$User = M('User');//执行其他的数据操作$User->select();

このメソッドは、モデル クラスを定義する必要がなく、プロジェクト間の呼び出しをサポートするため、最も単純かつ効率的です。また、カスタム モデル クラスがないため、関連するビジネス ロジックを作成できず、基本的な CURD 操作のみを完了できるという欠点もあります。

$User = M('User');

は実際には以下と同等です:

$User = new Model('User');

は think_user テーブルの操作を意味します。 M メソッドも D メソッドと同様にシングルトン関数を持ち、複数回呼び出されても繰り返しインスタンス化されません。 M メソッドのモデル名パラメーターは、データ テーブルに変換されるときに自動的に小文字に変換されます。これは、ThinkPHP のデータ テーブルの命名仕様がすべて小文字形式であることを意味します。


2. 他のパブリック モデル クラスをインスタンス化する

最初のインスタンス化方法は、モデル クラスの定義がないためです。追加のロジック メソッドをカプセル化するのは非常に困難ですが、ほとんどの場合、共通のロジックを拡張するだけで済むため、次の方法を試すことができます。

$User = M('CommonModel:User');

実際の使用法は次と同じです。

$User = new CommonModel('User');

システムのモデル クラスは自動的にロードできるため、インスタンス化の前にクラス ライブラリを手動でインポートする必要はありません。モデル クラス CommonModel は Model を継承する必要があります。 CommonModel クラスでいくつかの共通の論理メソッドを定義できるため、プロジェクトに既に 100 を超えるデータ テーブルがある場合、そのほとんどは基本的なメソッドです。CURD 操作では、一部のモデルのみがこのメソッドを備えています。カプセル化する必要がある複雑なビジネス ロジックがあるため、最初の方法と 2 番目の方法を組み合わせるのが良い選択です。


3. 受信テーブルのプレフィックス、データベース、その他の情報

M メソッドには 3 つのパラメーターがあり、最初のパラメーターはモデルです。名前 (基本的なモデル クラスとデータベースを含めることができます)、2 番目のパラメーターはデータ テーブルのプレフィックスを設定するために使用されます (現在のプロジェクト構成のテーブル プレフィックスを取得するには空白のままにします)、3 番目のパラメーターは現在のデータ テーブルのプレフィックスを設定するために使用されます。使用されるデータベース接続情報 (空白のままにします) 空の場合は、現在のプロジェクト構成のデータベース接続情報を取得します)。例:

$User = M('db2.User','think_');

は、Model モデル クラスをインスタンス化し、db2 で think_user テーブルを操作することを意味します。データベース。
2 番目のパラメータが空白のままか渡されない場合は、現在のプロジェクト構成でデータ テーブル プレフィックスを使用することを意味します。操作されているデータ テーブルにテーブル プレフィックスがない場合は、

$User = M('db1.User',null);
を使用できます。

はインスタンス化 Model モデル クラスを示し、db1 データベース内のユーザー テーブルを操作します。
操作するデータベースに別のユーザー アカウントが必要な場合は、データベースの接続情報を渡すことができます。たとえば、

$User = M('User','think_','mysql://user_a:[email protected]:3306/thinkphp');

は Model を使用して基本モデル クラスを表し、user_a アカウントを使用します。 think_user テーブルを操作するには データベースに接続するには、操作データベースは thinkphp です。
3 番目の接続情報パラメーターは、DSN 構成またはアレイ構成を使用でき、構成パラメーターもサポートできます。
たとえば、プロジェクト構成ファイルで

'DB_CONFIG'=>'mysql://user_a:[email protected]:3306/thinkphp';

を構成すると、以下を使用できます。

$User = M('User','think_','DB_CONFIG');

基本モデルのクラスとデータベースは、一緒に使用できます。例:

$User = M('CommonModel:db2.User','think_');

パブリック モデル クラスを使用して階層モデルをインスタンス化したい場合は、

M('UserLogic:User');

を使用して UserLogic をインスタンス化できます。これの意味は、

D('User','Logic');

を使用して同じ機能を実現できるため、大したことはありません。

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