본문 바로가기

TIP

[XE] XE동작 순서 Flow Chart




XpressEngine의 순서별 안내

XE의 각 순서별 자세한 내용은 아래와 같습니다.

  1. 요청 (Request)

    • XE는 웹프로그램이며 XE가 동작하기 위해서는 브라우저, 어플리케이션, XE 혹은 다른 프로그램들을 통해서 요청을 받게 되고 웹서버는 이 요청을 XE로 전달하게 됩니다.
    • XE를 요청할때는 Content-type에 따라서 최종 결과물 출력시 다른 형태로 출력을 하게 됩니다.

      • GET/ POST : 브라우저등에서 호출되는 HTML  결과물을 얻기 위한 요청 방식입니다.
      • JSON : Javascript로 만들어진 어플리케이션이나 AJAX 기법으로 데이터를 요청하거나 조작할때 사용되는 방식입니다.
      • XMLRPC : Javascript 또는 플래시등의 연동 어플리케이션 혹은 다른 XE 등의 프로그램에서 요청할때 사용됩니다.
    • XE의 모든 요청은 index.php 파일을 거치게 되어 있습니다.
  2. 정보 초기화 (Context Init)

    • 요청받을때 함께 입력받은 변수, 사용자의 언어, 설정된 DB 정보등 XE가 구동되기 위한 모든 정보를 초기화합니다.
    • Context class는 요청받은 도메인 정보에 따라 virtual Site에 대한 정보도 초기화를 하게 됩니다.
    • Context class는 XE의 모든 정보를 관리하는 상위 class이며 각 모듈들이 실행되고 결과물을 출력할때는 사용됩니다.
  3. 요청 받은 모듈 탐색 (ModuleHandler)

    • 정보 초기화가 끝나면 ModuleHandler 라는 XE의 모듈을 관리하는 ModuleHandler가 동작하게 됩니다.
    • ModuleHandler는 아래와 같은 변수를 이용해서 모듈을 찾고 동작 시킵니다.

      • document_srl : 문서 중심인 XE에서 최우선 접속 대상 파악은 문서 번호인 document_srl 변수로 찾게 됩니다.
      • mid : document_srl이 없거나 잘못된 값일 경우 mid 변수를 이용하여 대상 모듈을 찾게 됩니다.
      • module_srl : document_srl, mid가 없을 경우 module_srl 변수로 대상 모듈을 찾게 됩니다.
      • 위 3가지 변수로도 대상 모듈을 찾지 못했다면 기본 설정으로 되어 있는 모듈을 검색합니다.
        (virtualSite 사용 도메인으로 접속시 virtualSite의 기본 설정 모듈을 검색)
  4. 검색된 대상 모듈의 실행

    • 검색된 대상 모듈이 없다면 에러를 출력하게 되고 바로 결과물 출력을 위한 준비 단계로 넘어갑니다.
    • 대상 모듈이 있을 경우 대상 모듈의 동작을 위해 act 변수값을 검수합니다.

      • act 변수는 모든 모듈에서 정의한 action 이름을 담고 있는 변수입니다.
      • 이 act 변수에 담겨진 값이 모듈에서 정의한 action 중에 존재하지 않는다면 다른 모듈에서 정의되었는지를 찾게 됩니다.
      • 다른 모듈의 모든 action을 찾는 것이 아니라 action forward라는 DB에 입력된 것을 대상으로 찾게 됩니다.
      • action forward DB에서 찾게 되면 그 대상 모듈을 찾아서 현재 모듈과 교체하게 됩니다.
    • 모듈의 action에 해당하는 method를 찾아서 실행합니다.
  5. 모듈 실행

    • 4번을 통해 module, action을 찾게 되고 해당하는 method를 실행함으로서 모듈의 실행이 이루어집니다.
  6. 요청된 Content Type의 조사

    • GET/POST, JSON, XMLRPC의 요청 형식에 따라서 5번에서 실행된 결과를 출력할 방법을 찾게 됩니다.
    • GET/POST일 경우 HTML 로 출력하기에 Template Handler를 통해서 결과물을 생성하게 됩니다.
    • 물론 HTML 출력이기 때문에 editor component, widget등을 컴파일해서 결과를 대체시키게 됩니다.
    • JSON/ XMLRPC의 경우 해당 모듈의 module.api.php 파일을 통해서 결과를 한번 더 검수하게 합니다.
    • 이렇게 정리된 결과는 결과물 출력 단계로 넘어갑니다.
  7. 결과물 출력

    • Request Content Type에 따라서 적절한 결과물을 만들어서 출력합니다.
    • 이로서 XE의 동작은 끝이 납니다.

애드온(addon) 의 동작

XE 의 애드온은 위의 flow chart를 보면 hooking 개념으로 총 4번의 애드온 호출이 이루어집니다. XE의 동작중 입력이나 출력을 조작할 수 있는 position을 정의하고 이 position에서 애드온을 호출함으로서 애드온은 XE의 모듈이 하는 정상적인 동작을 변형하거나 중단 또는 무언가를 추가할 수 있습니다.