ホームページ > 記事 > PHPフレームワーク > thinkphp D関数でパラメータを渡す方法
1. D 関数の概要
D 関数は、ThinkPHP でモデル オブジェクトをインスタンス化するために一般的に使用されるメソッドであり、その構文形式は次のとおりです:
D('模型名','应用名');
このうち、モデル名は必須パラメータです。アプリケーション名はオプションのパラメータです。指定しない場合、デフォルトで現在のアプリケーションが使用されます。たとえば、ブログ モデルをインスタンス化したい場合は、次のコードを使用できます:
$Blog = D('Blog');
2. D 関数にパラメータを渡す方法
順番ビジネス ロジックをより適切に処理するために、開発中にモデルの特定のメソッドにパラメーターを渡す必要がある場合があります。次のコードは、20 歳以上のユーザーのリストをクエリするために使用できます。上記のコードの
$User = D('User'); $list = $User->getUsersByAge(20);
getUsersByAge は、年齢ごとのユーザー情報をクエリするために使用されるカスタム ユーザー モデル メソッドです。 D 関数を使用して User モデル オブジェクトをインスタンス化し、getUsersByAge メソッドを呼び出す必要がある場合、パラメーターをどのように渡せばよいでしょうか?
まず、D 関数の 2 番目のパラメーターであるアプリケーション名を理解する必要があります。デフォルトでは、アプリケーション名は現在のアプリケーションの名前です。別のアプリケーションでモデル オブジェクトをインスタンス化するには、アプリケーションの名前を指定するだけです。たとえば、Admin アプリケーションで User モデル オブジェクトのインスタンスを作成するには、次のコードを使用できます。
$User = D('User','Admin');
上記のコードでは、「Admin」はアプリケーション名を表します。この場合、Admin アプリケーションは User モデルを検索してオブジェクトをインスタンス化し、D 関数が適切に機能できるようにします。ただし、User モデルの getUsersByAge メソッドにパラメーターを渡す方法を見つける必要があります。
この問題に対処するために、ThinkPHP はより簡潔な記述方法を提供します。 D 関数の 3 番目のパラメーターを使用してパラメーターを渡すことができます。次のコードは、20 歳以上のユーザーのリストをクエリするために使用できます。
$User = D('User','',''); $list = $User->getUsersByAge(20);
上記のコードでは、最初の空の文字列はモデル名を表し、2 番目の空の文字列はアプリケーション名を表し、3 番目の空の文字列は、 string パラメータを渡すために使用されます。 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 メソッドでクエリ結果が返されます。
以上がthinkphp D関数でパラメータを渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。