ThinkPHP では、D 関数は、開発者がモデル オブジェクトを迅速にインスタンス化するのに役立つ便利なメソッドです。多くの場合、ビジネス ロジックをより適切に処理するには、モデルのメソッドにパラメーターを渡す必要があります。この記事では、D関数でパラメータを渡す方法を紹介します。
1. D 関数の概要
D 関数は、ThinkPHP でモデル オブジェクトをインスタンス化するためによく使用されるメソッドであり、その構文形式は次のとおりです:
D('模型名','应用名');
モデル名は必須パラメータです。アプリケーション名はオプションのパラメータです。指定しない場合、デフォルトで現在のアプリケーションが使用されます。たとえば、ブログ モデルをインスタンス化したい場合は、次のコードを使用できます:
$Blog = D('Blog');
2. D 関数にパラメータを渡す方法
実際の開発では、次のことが必要になる場合があります。メソッドをモデルに渡す ビジネス ロジックをより適切に処理するためにパラメーターを渡します。たとえば、20 歳以上のユーザーのリストをクエリする必要がある場合は、次のコードを使用できます。
$User = D('User'); $list = $User->getUsersByAge(20);
上記のコードでは、getUsersByAge は User モデルのカスタマイズされたメソッドであり、使用されます。年齢に基づいてユーザー情報を照会します。 D 関数を使用して User モデル オブジェクトをインスタンス化し、getUsersByAge メソッドを呼び出す必要がある場合、パラメーターをどのように渡せばよいでしょうか?
まず、D 関数の 2 番目のパラメーターであるアプリケーション名を理解する必要があります。デフォルトでは、アプリケーション名は現在のアプリケーションの名前です。他のアプリケーションでモデル オブジェクトをインスタンス化する必要がある場合は、アプリケーション名を指定することでインスタンス化できます。たとえば、Admin アプリケーションで User モデル オブジェクトをインスタンス化する場合は、次のコードを使用できます。
$User = D('User','Admin');
上記のコードでは、「Admin」はアプリケーション名を表します。このようにして、D 関数は Admin アプリケーションで User モデルを見つけて、オブジェクトをインスタンス化します。ただし、User モデルの getUsersByAge メソッドにパラメーターを渡す方法の問題は解決されていません。
この問題に対処するために、ThinkPHP はより簡潔な記述方法を提供します。 D 関数の 3 番目のパラメーターを使用してパラメーターを渡すことができます。たとえば、20 歳以上のユーザーのリストをクエリする必要がある場合、次のコードを使用できます。
$User = D('User','',''); $list = $User->getUsersByAge(20);
上記のコードでは、最初の空の文字列はモデル名を表し、2 番目の空の文字列はモデル名を表します。文字列はアプリケーション名を表し、3 番目の空の文字列はパラメータの受け渡しを示します。 getUsersByAge メソッドで func_get_args() 関数を使用して、渡されたパラメータを取得できます。
3. 例
プロジェクトで実践してみましょう ThinkPHP5.0 プロジェクトで、Blog モジュールを作成します。 Blog モジュールで Article コントローラーを作成し、ID が 10 より大きく、ステータスが 1 の記事のリストをクエリするインデックス メソッドを追加します。コードは次のとおりです。
// 文件地址:application\blog\controller\Article.php namespace app\blog\controller; use think\Controller; class Article extends Controller { public function index() { $Blog = D('Blog','Common'); $list = $Blog->getArticlesById(10,1); dump($list); } }
上記のコードでは、D 関数を使用してブログ モデル オブジェクトをインスタンス化し、アプリケーション名「Common」を指定します。また、条件を満たす記事のリストをクエリするために、ブログ モデルでカスタム メソッド getArticlesById を呼び出しました。 getArticlesById メソッドのコードは次のとおりです。
// 文件地址:application\common\model\Blog.php namespace app\common\model; use think\Model; class Blog extends Model { protected $table = 'blog'; public function getArticlesById($id,$status) { $where = [ 'id' => ['gt',$id], 'status' => $status ]; return $this->where($where)->select(); } }
上記のコードでは、ID が 10 より大きく、ステータスが 1 の記事のリストをクエリするメソッド getArticlesById を定義します。このメソッドは、$id と $status の 2 つのパラメータを受け入れます。 where メソッドを使用してメソッド内でクエリ条件を設定し、最後に select メソッドを通じてクエリ結果を返します。
上記の例を通して、D 関数は非常に使いやすく、モデル オブジェクトを迅速にインスタンス化し、パラメーターを渡してビジネス ロジックをより適切に処理するのに役立つことがわかります。
以上がthinkphpのD関数でパラメータを渡す方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。