XE 요청 라이프사이클
XE 요청 라이프사이클이란 URL에 접속한 순간부터 클라이언트에 응답을 보낸 순간까지 XE가 거치는 일련의 과정을 나타냅니다. 다음은 XE 요청 라이프사이클을 나타낸 그림입니다.
XE 요청 라이프사이클의 주요 과정은 다음과 같습니다.
- 컨텍스트 초기화
- 모듈 초기화
- 요청된 모듈 액션 실행
- 응답 결과 생성
개발자는 애드온을 사용해서 이 라이프사이클의 특정 순간에 커스텀 코드를 실행할 수 있습니다. 애드온은 XE 추가 기능의 일종으로서, PHP include 메커니즘으로 작동합니다. 코드가 직접 코어 메서드에 포함되기 때문에 라이프사이클을 조작하는 기능을 구현할 수 있습니다. 애드온에 관한 자세한 설명은 " 2.2 애드온 "을 참조하십시오.
컨텍스트 초기화는 Context 클래스에서 처리합니다. 이 클래스는 XE 액션이 실행되는 환경을 캡슐화합니다. 주요 역할은 다음과 같습니다.
- $GLOBALS의 컨텍스트 변수 설정(display handler에서 사용)
- 언어 유형에 따라 언어 파일 포함
- 컨텍스트와 세션의 인증(authentication) 정보 설정
- 서버에서 rewrite 모드를 사용하는지 확인
- 자바스크립트 사용을 위한 위치 설정
Context 클래스의 위치는 ./classes/context/Context.class.php입니다.
모듈 초기화는 ModuleHandler 클래스의 init() 메서드에서 처리합니다. init() 메서드의 역할은 다음과 같습니다.
- 모듈 초기화 전에 애드온 실행(before_module_init hook)
- 요청 인수에서 변수 설정
- XSS를 방지하기 위한 변수 인증
- module_srl, mid, document_srl를 기준으로 요청 모듈 검색
- 현재 모듈 정보를 컨텍스트로 설정
ModuleHandler 클래스 위치는 ./classes/module/ModuleHandler.class.php입니다.
모든 모듈은 ModuleHandler 클래스의 procModule() 메서드를 통해 실행됩니다. 이 메서드의 역할은 다음과 같습니다.
- 모듈 실행 전에 후크된 애드온 실행(before_module_proc hook)
- 현재 모듈 액션 실행
DisplayHandler 클래스는 결과 생성을 담당합니다. 요청 종류에 따라 HTML이나 XML/JSON 콘텐츠를 출력할 수 있습니다. HTML의 경우, 이 클래스는 지정된 템플릿 파일을 검색하고 분석하여 완성된 HTML 형식을 만듭니다. XML/JSON의 경우 ModuleObject 속성은 다른 포매팅 없이 XML/JSON으로 직렬화(serialize)됩니다.