>  기사  >  백엔드 개발  >  ThinkPHP 기능에 대한 자세한 설명: D 방법

ThinkPHP 기능에 대한 자세한 설명: D 방법

不言
不言원래의
2018-04-27 14:45:042840검색

이 기사에서는 ThinkPHP 기능에 대한 자세한 설명을 소개합니다. 특정 참조 값이 있는 D 메소드를 이제 여러분과 공유합니다. 는 사용자 정의 모델 클래스를 인스턴스화하는 데 사용되며 ThinkPHP 프레임워크에 의한 모델 클래스 인스턴스화를 캡슐화하고 싱글톤 모드를 구현하여 프로젝트 간 및 그룹 호출을 지원합니다. 호출 형식은 다음과 같습니다.

D('[project: //][그룹/]모델','모델 레이어 이름')

메서드의 반환 값은 인스턴스화된 모델 객체입니다.
D 메서드는 모델 클래스를 자동으로 감지할 수 있습니다. 사용자 정의 모델 클래스가 존재하지 않으면 동시에 인스턴스화된 모델에 대해 모델 기본 클래스가 인스턴스화됩니다. 반복적으로 인스턴스화되지 않습니다. D 메서드의 가장 일반적인 용도는 현재 프로젝트의 사용자 정의 모델을 인스턴스화하는 것입니다. 예:


코드를 복사

  1. // 实例化User模型
     $User = D('User');

复制代码

会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,所以,实际上的代码可能和下面的等效:

  1. import('@.Model.UserModel');
     $User = new UserModel();

复制代码

但是如果使用D方法的话,如果这个UserModel类不存在,则会自动调用

  1. new Model('User');

复制代码

并且第二次调用的时候无需再次实例化,可以减少一定的对象实例化开销。

D方法可以支持跨分组和项目实例化模型,例如:

  1. //实例化Admin项目的User模型
     D('Admin://User')
     //实例化Admin分组的User模型
     D('Admin/User')

复制代码

注意:要实现跨项目调用模型的话,必须确保两个项目的目录结构是并列的。

3.1版本开始,由于增加了分层模型的支持,所以D方法也可以实例化其他的模型,例如:

  1. // 实例化UserService类
     $User = D('User','Service');
     // 实例化UserLogic类
     $User = D('User','Logic');

复制代码

  1. D('User','Service');

复制代码

会导入Lib/Service/UserService.class.php,并实例化,等效于下面的代码:

하면 현재 프로젝트에서 Lib/Model/UserModel.class.php 파일을 가져온 다음 UserModel 클래스를 인스턴스화하므로 실제 코드는 다음과 동일할 수 있습니다. class=" Prettyprint linenums lang-php Prettyprinted">
  1. import('@.Service.UserService');
     $User = new UserSerivce();

코드 복사

하지만 D 메서드를 사용하는 경우 UserModel 클래스가 존재하지 않는 경우 , 자동으로 호출됩니다

rrreee🎜🎜

코드를 복사🎜🎜할 필요가 없습니다. 두 번째로 호출할 때 다시 인스턴스화하면 특정 개체 인스턴스화 오버헤드를 줄일 수 있습니다. 🎜🎜D 메소드는 그룹 및 프로젝트 전반에 걸쳐 모델 인스턴스화를 지원할 수 있습니다. 예: 🎜🎜🎜rrreee🎜🎜

복사 Code🎜🎜참고: 프로젝트 간 호출 모델을 구현하려면 두 프로젝트의 디렉터리 구조가 병렬인지 확인해야 합니다. 🎜🎜🎜버전 3.1부터 계층적 모델에 대한 추가 지원으로 인해 D 메서드는 다음과 같은 다른 모델도 인스턴스화할 수 있습니다. 🎜🎜🎜rrreee 🎜🎜

코드 복사🎜

🎜🎜🎜🎜🎜rrreee🎜🎜

코드를 복사🎜🎜하면 Lib을 가져옵니다 / Service/UserService.class.php 및 인스턴스화는 다음 코드와 동일합니다: 🎜🎜🎜rrreee🎜🎜🎜관련 권장 사항: 🎜🎜🎜Qian thinkphp5 인스턴스의 간단한 구현에 대해 이야기해 보세요🎜🎜

위 내용은 ThinkPHP 기능에 대한 자세한 설명: D 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.