> PHP 프레임워크 > ThinkPHP > thinkphp D 메소드는 무엇을 반환합니까?

thinkphp D 메소드는 무엇을 반환합니까?

青灯夜游
풀어 주다: 2022-03-15 18:51:27
원래의
1711명이 탐색했습니다.

thinkphp에서 D 메소드는 인스턴스화된 모델 객체를 반환할 수 있습니다. D 메소드는 사용자 정의 모델 클래스를 인스턴스화하는 데 사용됩니다. 이는 ThinkPHP 프레임워크에 의한 모델 클래스 인스턴스화를 캡슐화한 것입니다. 구문은 "D('[project://][group/]model','model layer name)입니다. ')", 반환 값은 인스턴스화된 모델 객체입니다.

thinkphp D 메소드는 무엇을 반환합니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, thinkphp v5.1 버전, Dell G3 컴퓨터.

D 메서드는 가장 일반적으로 사용되는 메서드입니다. 이는 ThinkPHP 프레임워크에 의한 모델 클래스 인스턴스화를 캡슐화하는 데 사용되며, 프로젝트 간 호출도 지원합니다. 호출 형식은 다음과 같습니다.

D('[项目://][分组/]模型','模型层名称')
로그인 후 복사

D 메서드의 반환 값은 인스턴스화된 모델 개체입니다.

D 메서드는 모델 클래스를 자동으로 감지할 수 있습니다. 사용자 정의 모델 클래스가 존재하지 않으면 모델 기본 클래스가 동시에 인스턴스화됩니다. 인스턴스화되었으면 인스턴스화 해제를 반복하지 않습니다.

D 메서드의 가장 일반적인 용도는 현재 프로젝트의 사용자 정의 모델을 인스턴스화하는 것입니다. 예:

// 实例化User模型
$User = D('User');
로그인 후 복사

는 현재 프로젝트에서 Lib/Model/UserModel.class.php 파일을 가져온 다음 UserModel을 인스턴스화합니다. 실제 코드는 다음과 동일할 수 있습니다.

import('@.Model.UserModel');
$User = new UserModel();
로그인 후 복사

D 메서드는 그룹과 프로젝트 전반에 걸쳐 모델 인스턴스화를 지원할 수 있습니다. 예:

//实例化Admin项目的User模型
D('Admin://User')
//实例化Admin分组的User模型
D('Admin/User')
로그인 후 복사

버전 3.1부터 계층적 모델에 대한 추가 지원으로 인해 D 메서드 인스턴스화할 수도 있습니다. 예를 들어,

// 实例化UserService类
$User = D('User','Service');
// 实例化UserLogic类
$User = D('User','Logic');
로그인 후 복사
D('User','Service');
로그인 후 복사

는 Lib/Service/UserService.class.php를 가져와서 인스턴스화합니다.

확장된 지식: D와 M의 주요 차이점은

M 메서드는 모델 클래스 파일을 생성할 필요가 없으며 M 메서드는 모델 클래스를 읽지 않으므로 기본적으로 자동 검증이 유효하지 않습니다. 하지만 동적으로 할당할 수 있습니다. 메서드가 구현되어

D 메서드는 모델 클래스를 생성해야 합니다.

다음 두 가지 방법을 사용하여 데이터 테이블의 매핑 개체를 만들 수 있습니다.

첫 번째 방법: $Test = D('Test')$Test = D(‘Test')

第二种:$Test = new Model(‘Test')

虽然这两种都可以对数据进行select,insert,delete,udpate操作,在

数据验证上有很大的不同,

用第一种方式实例一个模型就会有数据检查功能,如果 title 没有填写的话就会提示 “请输入标题” (这个是tp提供的一个自动验证功能,当然也需要在相应的model中定义好验证条件);

如果用第二种就没有了这个数据验证功能,需要手动验证。

总结如下:

  • D函数实例化的是你当前项目的Lib/Model下面的模块。

  • 如果该模块不存在的话,直接返回实例化Model的对象(意义就与M()函数相同)。

  • 而M只返回,实例化Model的对象。它的$name参数作为数据库的表名来处理对数据库的操作。

通俗点说:

  • D就是实例化一个基于Model文件的Model。

  • M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在。

再通俗一点说:

  • M实例化参数是数据库的表名。

  • D实例化的是你自己在Model文件夹下面建立的模型文件。

  • D就是在你没有定义模型的时候,系统自动帮你定义一个模型,这样你才进行简单的数据输入或者输出。

  • 每一个Action文件都应该对应Model文件的,如果你定义了Model的话,

如:$Form = D(“User”)就可以改成$Form = new  UserModel();

두 번째 방법: $ Test = new Model('Test')

둘 다 데이터에 대한 선택, 삽입, 삭제 및 업데이트 작업을 수행할 수 있지만

데이터 확인에는 큰 차이가 있습니다. 🎜🎜첫 번째를 사용하세요. 모델을 인스턴스화하면 데이터 확인 기능이 있습니다. 제목을 입력하지 않으면 "제목을 입력하세요"라는 메시지가 표시됩니다. (이것은 TP에서 제공하는 자동 확인 기능이며, 물론 확인 조건을 정의해야 합니다. 🎜 🎜두 번째 방법을 사용하는 경우에는 이 데이터 확인 기능이 없으므로 수동으로 확인해야 합니다. 🎜🎜요약은 다음과 같습니다: 🎜
  • 🎜D 함수는 현재 프로젝트의 Lib/Model 아래에 있는 모듈을 인스턴스화합니다. 🎜
  • 🎜모듈이 없으면 인스턴스화된 Model의 객체를 직접 반환합니다(M() 함수와 의미가 동일합니다). 🎜
  • 🎜그리고 M은 모델을 인스턴스화하는 객체만 반환합니다. $name 매개변수는 데이터베이스에 대한 작업을 처리하기 위해 데이터베이스의 테이블 이름으로 사용됩니다. 🎜
🎜일반인의 용어로 말하면: 🎜
  • 🎜D는 모델 파일을 기반으로 모델을 인스턴스화하는 것입니다. 🎜
  • 🎜M은 해당 Model 파일이 존재하지 않더라도 Model 메서드(ThinkPHP 기본 클래스)를 직접 인스턴스화하여 Model 개체를 동적으로 인스턴스화합니다. 🎜
🎜더 간단하게 말하면: 🎜
  • 🎜M 인스턴스화 매개변수는 데이터베이스의 테이블 이름입니다. 🎜
  • 🎜D는 Model 폴더 아래에 생성한 모델 파일을 인스턴스화합니다. 🎜
  • 🎜D는 모델을 정의하지 않아도 시스템이 자동으로 모델을 정의해 주기 때문에 간단한 데이터 입력이나 출력을 할 수 있다는 뜻입니다. 🎜
  • 🎜모든 작업 파일은 모델 파일과 일치해야 합니다. 모델을 정의하는 경우 🎜
🎜예: $Form = D("User" ) $Form = new UserModel();로 변경될 수 있습니다(사용자는 모델 파일 이름을 나타냄). 🎜🎜【관련 튜토리얼 추천: 🎜thinkphp Framework🎜】🎜

위 내용은 thinkphp D 메소드는 무엇을 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿