>  기사  >  백엔드 개발  >  Yii 프레임워크 공식 시리즈 가이드 시리즈 11 - 기본: 모듈

Yii 프레임워크 공식 시리즈 가이드 시리즈 11 - 기본: 모듈

黄舟
黄舟원래의
2017-02-11 09:44:381314검색



참고: 모듈은 버전 1.0.3부터 지원됩니다.

모듈은 모델, 뷰, 컨트롤러 및 기타 지원 구성 요소를 포함하는 독립적인 소프트웨어 단위입니다. 여러 면에서 모듈은 애플리케이션처럼 보입니다. 주요 차이점은 모듈을 개별적으로 배포할 수 없으며 애플리케이션 내에 있어야 한다는 것입니다. 사용자는 일반 애플리케이션에서 컨트롤러에 액세스하는 것처럼 모듈의 컨트롤러에 액세스할 수 있습니다.

모듈은 일부 시나리오에서 유용합니다. 대규모 애플리케이션의 경우 여러 모듈로 나누어야 할 수 있으며 각 모듈은 독립적으로 유지 관리 및 배포될 수 있습니다. 사용자 관리, 댓글 관리 등 일부 공통 기능을 모듈 형태로 개발해 향후 프로젝트에서 쉽게 재사용할 수 있습니다.

1. 모듈 생성

모듈은 디렉토리로 구성되며, 디렉토리 이름은 모듈의 고유 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 도구로 생성된 새 모듈의 기본 뼈대입니다.

2. 모듈 사용

모듈을 사용하려면 먼저 애플리케이션 기본 디렉토리의 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 디렉터리의 하위 디렉터리에 있는 경우에도 위의 라우팅을 사용할 수 있습니다. 체재. 예를 들어 PostControllerforum/controllers/admin 안에 있다고 가정하면 forum/admin/post/create을 통해 create 액션에 접근할 수 있습니다.

3. 중첩 모듈

모듈은 무한히 중첩될 수 있습니다. 이는 하나의 모듈이 다른 모듈을 포함할 수 있고, 다른 모듈이 다른 모듈을 포함할 수 있음을 의미합니다. 전자를 상위 모듈, 후자를 하위 모듈이라고 부릅니다. 하위 모듈은 앞서 애플리케이션 구성에서 모듈을 정의한 것처럼 상위 모듈의 모듈 속성에 정의되어야 합니다.

하위 모듈의 컨트롤러 작업에 액세스하려면 parentModuleID/childModuleID/controllerID/actionID 경로를 사용해야 합니다.

위는 Yii Framework 공식 시리즈 가이드 시리즈 11입니다. - 기본 지식: 모듈 내용에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!


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