XpressEngine의 순서별 안내
XE의 각 순서별 자세한 내용은 아래와 같습니다.
요청 (Request)
- XE는 웹프로그램이며 XE가 동작하기 위해서는 브라우저, 어플리케이션, XE 혹은 다른 프로그램들을 통해서 요청을 받게 되고 웹서버는 이 요청을 XE로 전달하게 됩니다.
XE를 요청할때는 Content-type에 따라서 최종 결과물 출력시 다른 형태로 출력을 하게 됩니다.
- GET/ POST : 브라우저등에서 호출되는 HTML 결과물을 얻기 위한 요청 방식입니다.
- JSON : Javascript로 만들어진 어플리케이션이나 AJAX 기법으로 데이터를 요청하거나 조작할때 사용되는 방식입니다.
- XMLRPC : Javascript 또는 플래시등의 연동 어플리케이션 혹은 다른 XE 등의 프로그램에서 요청할때 사용됩니다.
- XE의 모든 요청은 index.php 파일을 거치게 되어 있습니다.
정보 초기화 (Context Init)
- 요청받을때 함께 입력받은 변수, 사용자의 언어, 설정된 DB 정보등 XE가 구동되기 위한 모든 정보를 초기화합니다.
- Context class는 요청받은 도메인 정보에 따라 virtual Site에 대한 정보도 초기화를 하게 됩니다.
- Context class는 XE의 모든 정보를 관리하는 상위 class이며 각 모듈들이 실행되고 결과물을 출력할때는 사용됩니다.
요청 받은 모듈 탐색 (ModuleHandler)
- 정보 초기화가 끝나면 ModuleHandler 라는 XE의 모듈을 관리하는 ModuleHandler가 동작하게 됩니다.
ModuleHandler는 아래와 같은 변수를 이용해서 모듈을 찾고 동작 시킵니다.
- document_srl : 문서 중심인 XE에서 최우선 접속 대상 파악은 문서 번호인 document_srl 변수로 찾게 됩니다.
- mid : document_srl이 없거나 잘못된 값일 경우 mid 변수를 이용하여 대상 모듈을 찾게 됩니다.
- module_srl : document_srl, mid가 없을 경우 module_srl 변수로 대상 모듈을 찾게 됩니다.
- 위 3가지 변수로도 대상 모듈을 찾지 못했다면 기본 설정으로 되어 있는 모듈을 검색합니다.
(virtualSite 사용 도메인으로 접속시 virtualSite의 기본 설정 모듈을 검색)
검색된 대상 모듈의 실행
- 검색된 대상 모듈이 없다면 에러를 출력하게 되고 바로 결과물 출력을 위한 준비 단계로 넘어갑니다.
대상 모듈이 있을 경우 대상 모듈의 동작을 위해 act 변수값을 검수합니다.
- act 변수는 모든 모듈에서 정의한 action 이름을 담고 있는 변수입니다.
- 이 act 변수에 담겨진 값이 모듈에서 정의한 action 중에 존재하지 않는다면 다른 모듈에서 정의되었는지를 찾게 됩니다.
- 다른 모듈의 모든 action을 찾는 것이 아니라 action forward라는 DB에 입력된 것을 대상으로 찾게 됩니다.
- action forward DB에서 찾게 되면 그 대상 모듈을 찾아서 현재 모듈과 교체하게 됩니다.
- 모듈의 action에 해당하는 method를 찾아서 실행합니다.
모듈 실행
- 4번을 통해 module, action을 찾게 되고 해당하는 method를 실행함으로서 모듈의 실행이 이루어집니다.
요청된 Content Type의 조사
- GET/POST, JSON, XMLRPC의 요청 형식에 따라서 5번에서 실행된 결과를 출력할 방법을 찾게 됩니다.
- GET/POST일 경우 HTML 로 출력하기에 Template Handler를 통해서 결과물을 생성하게 됩니다.
- 물론 HTML 출력이기 때문에 editor component, widget등을 컴파일해서 결과를 대체시키게 됩니다.
- JSON/ XMLRPC의 경우 해당 모듈의 module.api.php 파일을 통해서 결과를 한번 더 검수하게 합니다.
- 이렇게 정리된 결과는 결과물 출력 단계로 넘어갑니다.
결과물 출력
- Request Content Type에 따라서 적절한 결과물을 만들어서 출력합니다.
- 이로서 XE의 동작은 끝이 납니다.
애드온(addon) 의 동작
'TIP' 카테고리의 다른 글
다음 카페 로그인 및 가입 없이 볼수 있도록 만들기 (0) | 2014.02.16 |
---|---|
[XE] XE Core 1.4.4 새 템플릿 문법 (0) | 2013.05.23 |
[EditPlus] 한글이 깨질때 (0) | 2013.05.21 |
[EditPlus] Template 추가하기 (0) | 2013.05.14 |
Crome bookmark backup 및 복구 (0) | 2013.05.13 |