D()와 M() 메서드의 차이점:
D와 M의 주요 차이점은
M 메서드는 모델 클래스 파일을 생성할 필요가 없으며, M 메소드는 모델 클래스를 읽지 않으므로 기본적으로 자동 검증이 유효하지 않지만 동적 할당
을 통해 달성할 수 있으며 D 메소드는 모델 클래스를 생성해야 합니다.
다음 두 가지 방법을 사용하여 데이터 테이블의 매핑 개체를 만들 수 있습니다.
첫 번째 방법: $Test = D('Test')
두 번째 방법 : $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()로 변경될 수 있습니다. 모델 파일 이름으로).