ホームページ > 記事 > PHPフレームワーク > thinkphpのmメソッドの使い方
thinkphp では、M() メソッドを使用して基本モデル クラスをインスタンス化します。インスタンス化後は、基本モデル クラス (デフォルトは Model クラス) のメソッドのみを呼び出すことができます。構文 "M( '[基本モデル名:]モデル名','データテーブルプレフィックス','データベース接続情報')"。
このチュートリアルの動作環境: Windows 7 システム、thinkphp v5.1 バージョン、Dell G3 コンピューター。
M メソッドは、基本的なモデル クラスのインスタンス化に使用されます。D メソッドとの違いは次のとおりです:
モデル クラスをカスタマイズする必要がなく、IO 負荷が軽減され、パフォーマンスが向上します ;
インスタンス化後は、基本モデル クラス (デフォルトは Model クラス) のメソッドのみを呼び出すことができます;
インスタンス化中に呼び出すことができます テーブルのプレフィックス、データベース、およびデータベース接続情報を指定します。
#D メソッドの能力は、カプセル化するカスタム モデル クラスの強度に反映されますが、 ThinkPHP フレームワークの新バージョンの基本モデル クラスの機能はますます強力になり、M メソッドは D メソッドよりもますます実用的になっています。
M メソッドの呼び出し形式:
M('[基础模型名:]模型名','数据表前缀','数据库连接信息')
M メソッドの具体的な使用方法を見てみましょう:
1. 基本モデルをインスタンス化します ( Model) class
モデルが定義されていない場合は、次のメソッドを使用して、操作用のモデル クラスをインスタンス化できます:
//实例化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 フレームワーク]
以上がthinkphpのmメソッドの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。