ホームページ > PHPフレームワーク > ThinkPHP > thinkphpのD関数でパラメータを渡す方法について話しましょう

thinkphpのD関数でパラメータを渡す方法について話しましょう

PHPz
リリース: 2023-04-07 15:09:39
オリジナル
718 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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