참고: 모듈은 버전 1.0.3부터 지원됩니다.
모듈은 모델, 뷰, 컨트롤러 및 기타 지원 구성 요소를 포함하는 독립적인 소프트웨어 단위입니다. 여러 면에서 모듈은 애플리케이션처럼 보입니다. 주요 차이점은 모듈을 개별적으로 배포할 수 없으며 애플리케이션 내에 있어야 한다는 것입니다. 사용자는 일반 애플리케이션에서 컨트롤러에 액세스하는 것처럼 모듈의 컨트롤러에 액세스할 수 있습니다.
모듈은 일부 시나리오에서 유용합니다. 대규모 애플리케이션의 경우 여러 모듈로 나누어야 할 수 있으며 각 모듈은 독립적으로 유지 관리 및 배포될 수 있습니다. 사용자 관리, 댓글 관리 등 일부 공통 기능을 모듈 형태로 개발해 향후 프로젝트에서 쉽게 재사용할 수 있습니다.
모듈은 디렉토리로 구성되며, 디렉토리 이름은 모듈의 고유 ID입니다. 모듈 디렉터리의 구조는 응용 프로그램 기본 디렉터리와 매우 유사합니다. fourm
모듈의 일반적인 디렉터리 구조는 다음과 같습니다.
forum/ ForumModule.php 模块类文件 components/ 包含可复用的用户组件 views/ 包含小物件的视图文件 controllers/ 包含控制器类文件 DefaultController.php 默认的控制器类文件 extensions/ 包含第三方扩展 models/ 包含模块类文件 views/ 包含控制器视图和布局文件 layouts/ 包含布局文件 default/ 包含 DefaultController 的视图文件 index.php 首页视图文件
모듈에는 CWebModule에서 상속되는 모듈 클래스가 있어야 합니다. 클래스 이름은 ucfirst($id).'Module'
표현식으로 결정됩니다. 여기서 $id
은 모듈의 ID(또는 모듈의 디렉터리 이름)를 나타냅니다. 모듈 클래스는 모듈 코드 간에 공유할 수 있는 정보를 저장하는 중심 장소입니다. 예를 들어 CWebModule::params를 사용하여 모듈 매개변수를 저장하고 CWebModule::comComponents를 사용하여 모듈 수준 애플리케이션 구성 요소를 공유할 수 있습니다.
팁: 다음에서 모듈을 사용할 수 있습니다. 생성할 Gii 도구로 생성된 새 모듈의 기본 뼈대입니다.
모듈을 사용하려면 먼저 애플리케이션 기본 디렉토리의 modules
에 모듈 디렉토리를 배치합니다. 그런 다음 애플리케이션의 모듈 속성에서 모듈 ID를 선언합니다. 예를 들어 위의 forum
모듈을 사용하려면 다음 애플리케이션 구성을 사용할 수 있습니다.
return array( ...... 'modules'=>array('forum',...), ...... );
초기 속성값으로 모듈을 구성할 수도 있습니다. 접근 방식은 애플리케이션 구성 요소를 구성하는 것과 매우 유사합니다. 예를 들어 forum
모듈은 모듈 클래스에 postPerPage
이라는 속성을 가질 수 있으며, 이는 다음과 같이 애플리케이션 구성에서 구성할 수 있습니다.
return array( ...... 'modules'=>array( 'forum'=>array( 'postPerPage'=>20, ), ), ...... );
모듈 인스턴스는 현재 활성 컨트롤러의 모듈 속성을 통해 액세스할 수 있습니다. 모듈 인스턴스 내에서 모듈 수준에서 공유된 정보에 액세스할 수 있습니다. 예를 들어 위의 postPerPage
정보에 액세스하려면 다음 표현식을 사용할 수 있습니다.
$postPerPage=Yii::app()->controller->module->postPerPage; // or the following if $this refers to the controller instance // $postPerPage=$this->module->postPerPage;
모듈의 컨트롤러 작업은 경로를 통해 액세스할 수 있습니다 moduleID/controllerID/actionID
. 예를 들어 위의 forum
모듈에 PostController
이라는 컨트롤러가 있다고 가정하면 forum/post/create
라우팅을 통해 이 컨트롤러의 create
작업에 액세스할 수 있습니다. 이 경로에 해당하는 URL은 http://www.php.cn/
입니다.
팁: 컨트롤러가
controllers
디렉터리의 하위 디렉터리에 있는 경우에도 위의 라우팅을 사용할 수 있습니다. 체재. 예를 들어PostController
가forum/controllers/admin
안에 있다고 가정하면forum/admin/post/create
을 통해create
액션에 접근할 수 있습니다.
모듈은 무한히 중첩될 수 있습니다. 이는 하나의 모듈이 다른 모듈을 포함할 수 있고, 다른 모듈이 다른 모듈을 포함할 수 있음을 의미합니다. 전자를 상위 모듈, 후자를 하위 모듈이라고 부릅니다. 하위 모듈은 앞서 애플리케이션 구성에서 모듈을 정의한 것처럼 상위 모듈의 모듈 속성에 정의되어야 합니다.
하위 모듈의 컨트롤러 작업에 액세스하려면 parentModuleID/childModuleID/controllerID/actionID 경로를 사용해야 합니다.
위는 Yii Framework 공식 시리즈 가이드 시리즈 11입니다. - 기본 지식: 모듈 내용에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!