>  기사  >  PHP 프레임워크  >  thinkphp D 함수에서 매개변수를 전달하는 방법

thinkphp D 함수에서 매개변수를 전달하는 방법

王林
王林앞으로
2023-06-02 19:32:09934검색

1. D 함수 소개

D 함수는 ThinkPHP에서 모델 개체를 인스턴스화하는 데 일반적으로 사용되는 방법으로 구문 형식은 다음과 같습니다.

D('模型名','应用名');

그 중 모델 이름은 필수 매개 변수입니다. 애플리케이션 이름은 선택적 매개변수입니다. 지정하지 않으면 기본값은 현재 애플리케이션입니다. 예를 들어 Blog 모델을 인스턴스화하려면 다음 코드를 사용할 수 있습니다.

$Blog = D('Blog');

2. 매개 변수를 D 함수에 전달하는 방법

비즈니스 로직을 더 잘 처리하려면 개발 중에 다음이 필요할 수 있습니다. 모델 매개변수의 특정 메소드에 전달합니다. 다음 코드는 20세 이상의 사용자 목록을 조회하는 데 사용할 수 있습니다.

$User = D('User');
$list = $User->getUsersByAge(20);

getUsersByAge 위 코드에서 사용자 정보를 연령별로 조회하는 데 사용되는 Custom User 모델 메소드입니다. D 함수를 사용하여 User 모델 객체를 인스턴스화하고 getUsersByAge 메소드를 호출해야 하는 경우 매개변수를 어떻게 전달해야 합니까?

먼저 D 함수의 두 번째 매개변수인 애플리케이션 이름을 이해해야 합니다. 기본적으로 애플리케이션 이름은 현재 애플리케이션의 이름입니다. 다른 애플리케이션에서 모델 객체를 인스턴스화하려면 애플리케이션 이름을 지정하기만 하면 됩니다. 예를 들어, Admin 애플리케이션에서 User 모델 객체의 인스턴스를 생성하려면 다음 코드를 사용할 수 있습니다.

$User = D('User','Admin');

위 코드에서 'Admin'은 애플리케이션 이름을 나타냅니다. 이 경우 관리 애플리케이션은 사용자 모델을 검색하여 개체를 인스턴스화하여 D 기능이 제대로 작동하도록 합니다. 그러나 여전히 User 모델의 getUsersByAge 메소드에 매개변수를 전달하는 방법을 찾아야 합니다.

이 문제를 해결하기 위해 ThinkPHP는 보다 간결한 작성 방법을 제공합니다. D 함수의 세 번째 매개변수를 사용하여 매개변수를 전달할 수 있습니다. 다음 코드는 20세 이상의 사용자 목록을 쿼리하는 데 사용할 수 있습니다

$User = D('User','','');
$list = $User->getUsersByAge(20);

위 코드에서 첫 번째 빈 문자열은 모델 이름을 나타내고 두 번째 빈 문자열은 애플리케이션 이름을 나타내며 세 번째 빈 문자열은 매개변수를 전달합니다. getUsersByAge 메소드에서 func_get_args() 함수를 사용하여 전달된 매개변수를 가져올 수 있습니다.

3.예제

실제 동작을 위해 ThinkPHP5.0 프로젝트에 Blog라는 모듈을 생성해 보겠습니다. 블로그 모듈에서 기사 컨트롤러를 생성하고 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 함수를 사용하여 Blog 모델 개체를 인스턴스화하고 애플리케이션 이름 '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라는 두 개의 매개변수를 허용합니다. where 메소드를 이용하여 쿼리 조건을 설정함으로써 최종적으로 select 메소드를 통해 쿼리 결과를 반환하게 된다.

위 내용은 thinkphp D 함수에서 매개변수를 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제