이 기사에서는 ThinkPHP 기능에 대한 자세한 설명을 소개합니다. 특정 참조 값이 있는 D 메소드를 이제 여러분과 공유합니다. 는 사용자 정의 모델 클래스를 인스턴스화하는 데 사용되며 ThinkPHP 프레임워크에 의한 모델 클래스 인스턴스화를 캡슐화하고 싱글톤 모드를 구현하여 프로젝트 간 및 그룹 호출을 지원합니다. 호출 형식은 다음과 같습니다.
메서드의 반환 값은 인스턴스화된 모델 객체입니다.
D 메서드는 모델 클래스를 자동으로 감지할 수 있습니다. 사용자 정의 모델 클래스가 존재하지 않으면 동시에 인스턴스화된 모델에 대해 모델 기본 클래스가 인스턴스화됩니다. 반복적으로 인스턴스화되지 않습니다. D 메서드의 가장 일반적인 용도는 현재 프로젝트의 사용자 정의 모델을 인스턴스화하는 것입니다. 예:
实
코드를 복사
// 实例化User模型 $User = D('User');
复制代码
会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,所以,实际上的代码可能和下面的等效:
import('@.Model.UserModel'); $User = new UserModel();
复制代码
但是如果使用D方法的话,如果这个UserModel类不存在,则会自动调用
new Model('User');
复制代码
并且第二次调用的时候无需再次实例化,可以减少一定的对象实例化开销。
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,并实例化,等效于下面的代码:
import('@.Service.UserService'); $User = new UserSerivce();
코드 복사
하지만 D 메서드를 사용하는 경우 UserModel 클래스가 존재하지 않는 경우 , 자동으로 호출됩니다
코드를 복사🎜🎜할 필요가 없습니다. 두 번째로 호출할 때 다시 인스턴스화하면 특정 개체 인스턴스화 오버헤드를 줄일 수 있습니다. 🎜🎜D 메소드는 그룹 및 프로젝트 전반에 걸쳐 모델 인스턴스화를 지원할 수 있습니다. 예: 🎜🎜🎜rrreee🎜🎜
복사 Code🎜🎜참고: 프로젝트 간 호출 모델을 구현하려면 두 프로젝트의 디렉터리 구조가 병렬인지 확인해야 합니다. 🎜🎜🎜버전 3.1부터 계층적 모델에 대한 추가 지원으로 인해 D 메서드는 다음과 같은 다른 모델도 인스턴스화할 수 있습니다. 🎜🎜🎜rrreee 🎜🎜
코드 복사
🎜
🎜🎜
🎜🎜🎜rrreee🎜🎜
코드를 복사🎜🎜하면 Lib을 가져옵니다 / Service/UserService.class.php 및 인스턴스화는 다음 코드와 동일합니다: 🎜🎜🎜rrreee🎜🎜🎜관련 권장 사항: 🎜🎜🎜Qian thinkphp5 인스턴스의 간단한 구현에 대해 이야기해 보세요🎜🎜
위 내용은 ThinkPHP 기능에 대한 자세한 설명: D 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!