본문 바로가기

Yii Framework/Guide to Yii 1.0

07. 응용프로그램

이 곳은 제가 개인적으로 YII framework의 블로그 만들기를 번역해 놓은 곳입니다.

제가 영어 전공자도.. 그렇다고 영어랑 친하지도 않습니다. 

그래서 보시면 뭔가 글도 엉성하고 말이 안맞는게 많습니다.

잘못 오역된 부분이라던지 그런 부분들 친절하게 알려주시면 바로 수정하겠습니다.

이 페지의 원글 http://www.yiiframework.com/doc/blog/1.1/en/basics.application



응용프로그램

응용 프로그램은 요청이 처리되는 이내에 실행 컨텍스트를 캡슐화하는 개체입니다. 주된 작업은 요청에 대한 몇 가지 기본적인 정보를 수집하여 그 대상 처리를 위해 적절한 컨트롤러에 요청을 전달하는 것입니다. 또한 응용 프로그램 수준의 초기 구성을 유지하기위한 핵심 장소로도 동작합니다.. 이러한 이유로 응용 프로그램 객체는 프론트 컨트롤러 라고도합니다.
응용 프로그램은 항목 스크립트 는 단일 항목으로 생성됩니다.

응용 프로그램 싱글턴은 어느 곳에서나 Yii::app ()로 액세스 할 수 있습니다.

1. 응용프로그램 초기구성

기본적으로 응용 프로그램 개체는 CWebApplication의 인스턴스입니다. 이를 정의하기 위해, 일반적으로 초기 구성 파일 (또는 배열)를 제공하고, 인스턴스의 생성시 속성 값을 초기화합니다. 응용 프로그램을 사용자 정의 하는 또 다른 방법은 CWebApplication 를 확장하는 것입니다.

초기 구성은 "키- "쌍의 배열입니다. 키는 응용 프로그램 인스턴스의 속성 이름을 나타냅니다. 값은 해당 속성의 초기 값입니다. 예를 들어 다음의 초기 구성 파일은 name 및 defaultController 속성을 구성합니다.

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

일반적으로 초기 구성은 독립적 인 PHP 스크립트에 저장합니다 (예:protected/config/main.php) 이 스크립트에서 다음과 같이 구성의 배열을 돌려줍니다.

return array(...);

초기 구성을 적용하려면 응용 프로그램의 생성자에 초기 구성 파일 이름을 매개 변수로 전달합니다. 또는 보통 항목 스크립트 에서 다음과 같이 Yii::createWebApplication () 초기 구성 파일 이름을 매개 변수로 전달합니다.

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

팁: 만약 애플리케이션 초기 구성이 매우 복잡한 경우 여러 파일로 나눌 수 있습니다. 각각의 파일은 구성 배열의 일부를 반환합니다. 그리고 메인 초기 구성 파일에서 PHP의 include () 에 의해 다른 구성 파일을 포함, 전체 구성 배열에 병합합니다.

2. 응용프로그램 디렉토리 기반
응용 프로그램 기본 디렉토리는 보안상 주의를 요하는 모든 PHP 스크립트와 데이터의 저장 위치의 루트 디렉토리입니다. 기본적으로 항목 스크립트를 포함하는 디렉토리 아래의 protected 라는 서브 디렉토리입니다. 이 위치는 응용 프로그램 초기 구성 의 basePath 속성 값을 변경하여 정의 할 수 있습니다.

응용 프로그램 기본 디렉토리 아래의 내용은 웹 사용자가 액세스되지 않도록 보호해야합니다. Apache HTTP 서버를 이용하는 경우 .htaccess 파일을 기반 디렉토리 아래에두면 쉽게 구현할 수 있습니다. .htaccess 파일의 내용은 다음과 같습니다.
deny from all

3. 응용프로그램 구성요소
응용 프로그램 객체의 기능은 유연한 구성 요소 아키텍처로 쉽게 정의 할 수 있으며 풍부하게  할 수 있습니다. 응용 프로그램은 일련의 응용 프로그램 구성 요소를 관리하고 각각 별도의 기능을 구현합니다. 예를 들어, 응용 프로그램은 사용자 요청에 대한 몇 가지 초기 작업을 수행하기 위해 CUrlManager 구성 요소와 CHttpRequest 구성 요소의 처리를 수행합니다.

응용 프로그램 인스턴스 components 속성을 구성하여 어떤 애플리케이션 컴포넌트를 사용하는 경우에도, 클래스 및 속성 값을 사용자 정의 할 수 있습니다. 예를 들어, 다음과 같이 여러 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),
            ),
        ),
    ),
)

위에서, components 배열에 cache 요소를 추가했습니다.구성요서의 클래스는 CMemCache이며, 캐쉬요소의 상태 및 서버 속성은 다음과 같이 초기화 해야 합니다.

응용 프로그램 구성 요소에 액세스하려면 Yii::app()->ComponentID 를 사용 사용하며, 여기서ComponentID 구성 요소의 ID (예 Yii::app()->cach )를 참조 합니다.

응용 프로그램 구성 요소는 초기 구성 파일에서 enabled 속성을 false으로 설정하여 해제 할 수 있습니다. 비활성화 된 구성 요소에 액세스하면 null이 반환 됩니다.

팁 : 기본적으로, 응용 프로그램 구성 요소가 수요에 만들어집니다. 이러한 문제는 사용자가 요청하는 동안 액세스되지 않은 경우 응용 프로그램 구성 요소가 전혀 생성되지 않을 수 있습니다 의미합니다. 결과적으로 응용 프로그램이 다량의 요소를 가지도록 구성되어도 전체로서의 성능은 떨어지지 않습니다. 일부 응용 프로그램 구성 요소 (예 CLogRouter )는 액세스되는지 여부에 관계없이 생성 될 필요가있을 것이다. 이렇게하려면 미리 로드 응용 프로그램 속성에서 자신의 ID를 나열합니다.

4.응용프로그램 핵심 구성요소

Yii는 웹 애플리케이션의 일반적인 기능을 제공하는 일련의 핵심 응용 프로그램 구성 요소를 미리 정의하고 있습니다. 예를 들어, request 구성 요소는 사용자 요청에 대한 정보를 수집하고 요청 된 URL과 쿠키 정보를 제공하는 데 사용됩니다. 이 같은 핵심 구성 요소의 속성 값을 구성하여 우리는 Yii의 기본 동작의 거의 모두를 변경할 수 있습니다.

다음은 CWebApplication 의해 미리 선언 된 핵심 구성 요소의 목록입니다.
  • assetManager : CAssetManager - 개인 자산 파일 게시를 관리합니다.
  • authManager : CAuthManager - 역할 기반 액세스 제어 (RBAC)를 관리합니다.
  • cache : CCache - 데이터 캐시 기능을 제공합니다. 주의 : 실제 클래스 (예 : CMemCache , CDbCache )을 지정 해야 합니다. 이 구성 요서를 액세스 할때 그렇지 않으면 null을 반환합니다.
  •  clientScript : CClientScript - 클라이언트 스크립트 (javascript 나 CSS)을 관리합니다.
  • coreMessages : CPhpMessageSource - Yii 프레임 워크에서 사용되는 번역 된 코어 메시지를 제공합니다.
  • db : CDbConnection - 데이터베이스 연결을 제공합니다. 주의 :이 구성 요소를 사용하려면 connectionString속성을 구성해야합니다.
  • errorHandler : CErrorHandler - 캐치되지 않은 PHP 오류와 예외를 처리합니다.
  • format : CFormatter - 표시 목적으로 데이터 값을 포맷합니다.
  • messages : 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 () 는 응용 프로그램을 초기화합니다
    - 응용 프로그램 동작을 등록합니다;
    - 정적 응용 프로그램 구성 요소를 실행합니다;
  6. 이벤트 onBeginRequest 을 발행합니다.
  7. 사용자 요청을 처리합니다
    - 요청에 대한 정보를 수집합니다
    - 컨트롤러를 생성합니다
    - 컨트롤러를 실행합니다
  8. 이벤트 onEndRequest 을 발행합니다