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

ThinkPHPの機能詳細解説:Mメソッド

WBOY
リリース: 2016-07-29 09:15:50
オリジナル
771 人が閲覧しました

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

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

//实例化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:1234@localhost:3306/thinkphp');
ログイン後にコピー

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

'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp';
ログイン後にコピー

が構成されている場合、以下を使用できます:

$User = M('User','think_','DB_CONFIG');
ログイン後にコピー

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

$User = M('CommonModel:db2.User','think_');
ログイン後にコピー

階層モデルをインスタンス化する場合、パブリック モデル クラスを使用し、

M('UserLogic:User');
ログイン後にコピー

を使用して UserLogic をインスタンス化できます。ただし、これにはあまり意味がありません。同じ機能が

D('User','Logic');
ログイン後にコピー

で実現できるためです。

以上、ThinkPHP の関数:M メソッドの詳細な説明を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート