>  기사  >  백엔드 개발  >  Yii Framework 공식 튜토리얼 보충 자료 6 - 기본 지식: 애플리케이션, 구성 요소, 구성, 수명 주기

Yii Framework 공식 튜토리얼 보충 자료 6 - 기본 지식: 애플리케이션, 구성 요소, 구성, 수명 주기

黄舟
黄舟원래의
2017-02-11 09:32:251341검색



애플리케이션은 요청 처리 시 실행 컨텍스트를 의미합니다. 주요 임무는 사용자 요청을 분석하고 추가 처리를 위해 적절한 컨트롤러로 전달하는 것입니다. 또한 애플리케이션 수준 구성을 유지 관리하는 서비스 센터 역할도 합니다. 이러한 이유로 애플리케이션을 프런트엔드 컨트롤러라고도 합니다.

응용 프로그램은 항목 스크립트에 의해 싱글톤 개체로 생성됩니다. 이 애플리케이션 싱글톤 개체는 Yii::app()을 통해 어디서나 액세스할 수 있습니다.

1. 애플리케이션 구성

기본적으로 애플리케이션은 CWebApplication의 인스턴스입니다. 이를 사용자 정의하려면 일반적으로 애플리케이션 인스턴스를 생성할 때 해당 속성 값을 초기화하기 위한 구성 파일(또는 배열)을 제공해야 합니다. 애플리케이션을 사용자 정의하는 또 다른 방법은 CWebApplication을 확장하는 것입니다.

구성은 키-값 쌍의 배열입니다. 각 키는 애플리케이션 인스턴스의 속성 이름을 나타내며, 각 값은 해당 속성의 초기 값입니다. 예를 들어 다음 구성은 애플리케이션의 이름과 defaultController 속성을 설정합니다.


array(
    'name'=>'Yii Framework',
    'defaultController'=>'site',
)

저희는 일반적으로 이러한 구성을 별도의 PHP 스크립트(예: protected/config/main.php)에 저장합니다. 스크립트에서는


return array(...);

를 통해 이 구성 배열을 반환합니다. 이 구성을 적용하려면 구성 파일을 추가합니다. name은 다음과 같이 응용 프로그램의 생성자 또는 Yii::createWebApplication()에 매개 변수로 전달됩니다. 이는 일반적으로 입력 스크립트에서 수행됩니다:


$app=Yii::createWebApplication($configFile);

팁: 애플리케이션 구성 매우 복잡하므로 여러 파일로 나눌 수 있으며 각 파일은 구성 배열의 일부를 반환합니다. 그런 다음 기본 구성 파일에서 PHP의 include()를 호출하여 나머지 구성 파일을 포함하고 이를 완전한 구성 배열로 병합합니다.

2. 애플리케이션 기본 디렉터리

애플리케이션 기본 디렉터리는 보안에 민감한 모든 PHP 스크립트와 데이터가 포함된 루트 디렉터리를 의미합니다. 기본적으로 이는 항목 스크립트가 포함된 디렉토리에 위치한 protected라는 하위 디렉토리입니다. 애플리케이션 구성에서 basePath 속성을 설정하여 사용자 정의할 수 있습니다.

애플리케이션 기본 디렉터리의 콘텐츠는 웹사이트 방문자가 직접 액세스하지 못하도록 보호해야 합니다. Apache HTTP 서버의 경우 기본 디렉터리에 .htaccess 파일을 배치하면 이 작업을 쉽게 수행할 수 있습니다. .htaccess의 내용은 다음과 같습니다.

deny from all

3. 애플리케이션 구성요소

유연한 구성요소 구조를 통해 애플리케이션의 기능을 쉽게 사용자 정의하거나 향상시킬 수 있습니다. 애플리케이션은 일련의 애플리케이션 구성요소를 관리하며, 각 구성요소는 특정 기능을 구현합니다. 예를 들어 응용 프로그램은 CUrlManager 및 CHttpRequest를 사용하여 사용자의 요청을 구문 분석합니다.

애플리케이션의 구성요소 속성을 구성하면 애플리케이션에서 사용되는 모든 구성요소 클래스와 해당 속성 값을 사용자 정의할 수 있습니다. 예를 들어, 캐싱을 위해 여러 Memcache 서버를 사용할 수 있도록 애플리케이션의 CMemCache 구성 요소를 구성할 수 있습니다.


array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
)

As 위에 표시된 것처럼 구성 요소 배열에 캐시 요소를 추가했습니다. 캐시 요소는 이 구성 요소의 클래스가 CMemCache이고 해당 서버 특성이 그에 따라 초기화되어야 함을 나타냅니다.

애플리케이션 구성 요소에 액세스하려면 Yii::app()->ComponentID를 사용하세요. 여기서 ComponentID는 구성 요소 ID(예: Yii::app()->cache)를 나타냅니다.

애플리케이션 구성에서 활성화를 false로 설정하면 애플리케이션의 구성 요소를 비활성화할 수 있습니다. 비활성화된 구성 요소에 액세스하면 Null이 반환됩니다.

팁: 기본적으로 애플리케이션 구성 요소는 요청 시 생성됩니다. 이는 사용자 요청에서 애플리케이션 구성 요소에 액세스하지 않으면 전혀 생성되지 않을 수 있음을 의미합니다. 따라서 애플리케이션이 많은 구성 요소로 구성된 경우 전체 성능이 저하되지 않을 수 있습니다. 일부 애플리케이션 구성 요소(예: CLogRouter)는 액세스 여부에 관계없이 생성해야 할 수 있습니다. 이렇게 하려면 애플리케이션의 preload 속성에 해당 ID를 나열하세요.

4. 핵심 애플리케이션 구성 요소

Yii는 일반적인 웹 애플리케이션에서 사용되는 기능을 제공하기 위해 일련의 핵심 애플리케이션 구성 요소를 미리 정의합니다. 예를 들어 요청 구성 요소는 사용자 요청을 구문 분석하고 URL, 쿠키 등과 같은 정보를 제공하는 데 사용됩니다. 이러한 핵심 구성 요소의 속성을 구성함으로써 거의 모든 측면에서 Yii의 기본 동작을 수정할 수 있습니다.

아래에는 CWebApplication에서 사전 정의한 핵심 구성 요소가 나열되어 있습니다.

  • assetManager: CAssetManager - 개인 리소스 파일의 릴리스를 관리합니다.

  • authManager: CAuthManager - 역할 기반 액세스 제어(RBAC)를 관리합니다.

  • cache: CCache - 데이터 캐싱 기능을 제공합니다. 실제 클래스(예: CMemCache, CDbCache)를 지정해야 합니다. 그렇지 않으면 이 구성 요소에 액세스할 때 NULL이 반환됩니다.

  • clientScript: CClientScript - 클라이언트 스크립트(javascript 및 CSS)를 관리합니다.

  • coreMessages: CPhpMessageSource - Yii 프레임워크에서 사용되는 핵심 메시지의 번역을 제공합니다.

  • db: CDbConnection - 데이터베이스 연결을 제공합니다. 이 구성 요소를 사용하려면 해당 연결 문자열 속성을 구성해야 합니다.

  • errorHandler: CErrorHandler - 발견되지 않은 PHP 오류 및 예외를 처리합니다.

  • 형식: CFormatter - 형식화된 숫자 표시입니다. 이 기능은 버전 1.1.0부터 사용할 수 있습니다.

  • 메시지: CPhpMessageSource - Yii 애플리케이션에 사용되는 메시지 번역을 제공합니다.

  • request: CHttpRequest - 사용자 요청에 대한 정보를 제공합니다.

  • securityManager: CSecurityManager - 해싱, 암호화 등 보안 관련 서비스를 제공합니다.

  • session: CHttpSession - 세션 관련 기능을 제공합니다.

  • statePersister: CStatePersister - 전역 상태 지속성 방법을 제공합니다.

  • urlManager: CUrlManager - URL 구문 분석 및 생성 관련 기능을 제공합니다.

  • user: CWebUser - 현재 사용자의 식별 정보를 제공합니다.

  • themeManager: CThemeManager - 테마를 관리합니다.

5. 애플리케이션 수명 주기

사용자 요청을 처리할 때 애플리케이션은 다음 수명 주기를 거칩니다.

  1. 통과 CApplication::preinit()는 애플리케이션을 사전 초기화합니다.

  2. 클래스의 자동 로더 및 오류 처리를 설정합니다.

  3. 핵심 클래스 구성 요소를 등록합니다. ;

  4. 애플리케이션 구성 로드;

  5. CApplication::init():

    을 통해 애플리케이션 초기화 🎜>
  • 애플리케이션 동작 등록,

  • 정적 애플리케이션 구성요소 로드

  • onBeginRequest 이벤트 실행; >
  • 사용자 요청 처리:

  • 사용자 요청 구문 분석

    • 컨트롤러 생성; >

      컨트롤러를 실행하고
    • onEndRequest 이벤트를 트리거합니다.
  • 위는 Yii Framework 공식 튜토리얼 보충 6 - 기본 지식: 애플리케이션, 구성 요소, 구성, 라이프 사이클 콘텐츠 및 기타 관련 콘텐츠입니다. PHP 중국어 웹사이트(www.php.cn)를 주목하세요!

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