Getting Started Architecture
Wednesday, April 24, 2024 6:20 PM고도몰 아키텍쳐
Request 처리 순서
- 사용자의 요청은
route
로 전달 되어 고도몰에서 처리할 준비를 합니다. -
Application
은 솔루션 구동에 필요한 리소스를 준비하고 요청을 처리할Controller
를 찾아서 실행 시킵니다. -
Controller
는 사용자의Request
를 처리하고 템플릿을 찾아 화면에 보여질 데이터를 전달합니다. - 템플릿은
Controller
로 부터 데이터를 전달 받아서 데이터를 설정한 뒤Controller
로 HTML 스트링을 반환합니다. -
Controller
는 템플릿과 데이터가 처리된 HTML 스트링을 화면에 출력합니다.
Route의 동작
- 사용자의 요청은 모두
사용자 소스 디렉토리(User Source Directory)
내route.php
에서 받은 뒤 처리됩니다. -
autoload.php
는 ClassLoader를 이용하여원본 소스 디렉토리(Base Source Directory)
및사용자 소스 디렉토리(User Source Directory)
아래의 클래스를 생성하여 로드합니다. -
bootstrap.php
는 Application 생성 후 필요한 리소스를 로드합니다.
Application의 동작
-
bootstrap.php
에서Application
객체를 생성합니다. -
Application
객체가 생성되면AbstractBootstrap
을 상속받은 클래스를 로드하여 객체를 모두 실행합니다. -
Bootstrap
에 필요한 클래스의 객체 생성 후Application
컨테이너에 주입시킵니다. -
Application
의 실행 준비가 완료되면 사용자 요청을 처리한Controller
를 찾아서 요청을 처리하도록 합니다.
Controller의 동작
-
Interceptor
에서 템플릿 레이아웃 설정, 글로벌 변수 설정, 통계 데이터 측정, 보안 및 인증과 같은 전역에서 이루어져야 하는 작업을 처리합니다. - 사용자가 작성한
MyController::pre()
메소드가 실행됩니다. - 사용자가 작성한
MyController::index()
메소드가 실행됩니다. - 사용자가 작성한
MyController::postHandle()
메소드가 실행됩니다.
View의 동작
- 컨트롤러에서 호출한 View 엔진인 Template_를 토대로 템플릿 엔진을 구성합니다.
- 템플릿 엔진의 종류
- Template_ 엔진 :
사용자
스킨 처리 - Include 엔진 :
관리자
스킨 처리
- Template_ 엔진 :
Class Loader의 동작
-
Classloader
가사용자 소스 디렉토리(User Source Directory)
의module
에서class
를 먼저 검색하고, 없으면원본 소스 디렉토리(Base Source Directory)
에서 검색을 합니다. -
class
가사용자 소스 디렉토리(User Source Directory)
의module
에서 검색되면원본 소스 디렉토리(Base Source Directory)
의class
는 무시됩니다. - 원본 소스 중 확장 가능한
class
는사용자 소스 디렉토리(User Source Directory)
의module
에 원본 소스의class
를 확장한Wrapping class
를 만들어 사용할 수 있습니다.
사용자 소스 디렉토리(User Source Directory) 구조
- 최상위 경로에서 동작하는 파일은
route.php
,blank.php
만 해당됩니다. - 신규 파일을 생성하시려면
data
,skin
를 이용해 주시기 바랍니다. -
tmp
에서 이미지 및 신규파일의 작업을 진행하시면 파일의 소실이 우려가 있으니 지양해 주시기 바랍니다.
사용자 소스 디렉토리(User Source Directory) 권한
-
data
,skin
디렉토리(하위 경로 포함)는0707
이상의 권한이 필요합니다.