thinkphp에서 D 메소드는 인스턴스화된 모델 객체를 반환할 수 있습니다. D 메소드는 사용자 정의 모델 클래스를 인스턴스화하는 데 사용됩니다. 이는 ThinkPHP 프레임워크에 의한 모델 클래스 인스턴스화를 캡슐화한 것입니다. 구문은 "D('[project://][group/]model','model layer name)입니다. ')", 반환 값은 인스턴스화된 모델 객체입니다.
이 튜토리얼의 운영 환경: 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에서 제공하는 자동 확인 기능이며, 물론 확인 조건을 정의해야 합니다. 🎜 🎜두 번째 방법을 사용하는 경우에는 이 데이터 확인 기능이 없으므로 수동으로 확인해야 합니다. 🎜🎜요약은 다음과 같습니다: 🎜$Form = D("User" )
는 $Form = new UserModel();
로 변경될 수 있습니다(사용자는 모델 파일 이름을 나타냄). 🎜🎜【관련 튜토리얼 추천: 🎜thinkphp Framework🎜】🎜위 내용은 thinkphp D 메소드는 무엇을 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!