첫번째 시간에는 index.php에 대해서 알아보았는 데요.. 한마디로 정리하자면..."index.php는 XE구성파일을 불려와 실행하는 실행파일이다.."
이번에는 XE의 전체적인 그림을 살펴볼려고 해요..
각각의 구성폴더와 파일이 무슨역할을 하는 지 알아보겠습니다..
1. Core의 구성폴더를 찾아서...
XE 구성폴더와 그 역할은 다음과 같습니다.
더 자세히 얘기해보도록하죠..
- addons : 애드온 프로그램들이 있는 폴더로, XE는 이 폴더의 하위폴더(애드온)들을 읽어 실행에 반영합니다.
- admin : 편리를 위해 /admin/(index.php)에 접속하면 자동으로 XE의 관리자페이지(./index.php?module=admin)로 이동합니다. 그리고, XE도움말 페이지(help)도 있습니다.
- classes : XE실행에 핵심이 되는 class 파일들이 있습니다.
- common : XE에서 공통으로 사용되는 파일들이 있습니다.
- config : XE의 정의파일들이 있습니다. (고정변수,전역함수 정의) 예 : XE버전,디버그관련 설정,웹 페이지 압축여부등.. 정의
- layouts : 레이아웃들이 있는 폴더로, XE는 이 폴더의 하위폴더(레이아웃)들을 읽어 실행에 반영합니다.
- libs : XE에서 사용하는 PHP라이브러리가 있습니다. (php에서 ftp접속, tar압축 ,메일작업등을 위한 classe들이 있음. )
- m.layouts : 모바일전용 레이아웃들이 있습니다.
- modules : XE 모듈 프로그램들이 있는 폴더로, XE는 이 폴더의 하위폴더(모듈)들을 읽어 실행에 반영합니다.
- phpDoc : XE개발 편리를 위해 정의된 phpDocumentor 파일입니다. XE와 무관하니, 신경안쓰셔도 됩니다.
- widgets : 위젯 프로그램들이 있는 폴더로, XE는 이 폴더의 하위폴더(위젯)들을 읽어 실행에 반영합니다.
- widgetstyles : 위젯스타일들이 있는 폴더입니다.
- files : 원래 Core에는 포함되지않는 폴더로, XE실행시 자동으로 생성되는 폴더입니다. 첨부파일,캐시파일 등.. XE실행에서 나오는 파일들이 저장되는 폴더입니다. (직접 업로드한 폴더가 아니므로 폴더삭제가 되지않을 수 있습니다.)
2. Core의 구성파일을 찾아서...
일단, XE실행에서 중요한 파일들만 살펴보겠습니다. (config,classes폴더에 있는 파일들)
지금은 파일의 기능만 간단히 설명하도록하고, 나중에 더욱 자세히 살펴보도록하겠습니다.
* config
- config.inc.php : XE버전,디버그 설정,압축설정등 정의하고,func.inc.php파일과 classes폴더에 있는 class파일들을 불려옵니다.
- func.inc.php : 편리를 위해 정의된 함수들이 있습니다. (객체생성,url인코딩,문자열 자르기,날짜포맷,utf-8변환,CSRF체크함수등..)
- package.inc.php : XE를 다른이름이나 패키지 단위로 묶어 재배포할 경우 그 정보를 정의한 파일입니다.
* classes
- object/Object.class.php : 에러,메시지,기타다른변수를 추가,관리할 수 있는 클래스 (모든모듈에서 상속받음)
- extravar/Extravar.class.php : "사용자정의" 같은 확장변수들의 추가를 위한 클래스 (게시판의 "사용자정의", 회원가입폼추가에서 사용)
- handler/Handler.class.php : "Handler"라는 추상적인 이름으로 비어있는 클래스 (비워놓은 이유는 "추후를 대비해서 거나 사용자정의"를 위한 것으로 추정)
- xml/XmlParser.class.php : XE에서 사용되는 XML 파싱을 위한 클래스
- xml/XmlGenerator.class.php : 일반적인 XML 파싱을 위한 클래스
- xml/XmlJsFilter.class.php : XE에서 사용되는 XML filter를 파싱후 JS코드로 변환하는 클래스
- xml/XmlLangParser.class.php : XE에서 사용되는 XML 언어파일을 파싱후 PHP코드로 변환하는 클래스
- cache/CacheHandler.class.php : XE에서 캐시를 활용하기위한 클래스 (apc,memcache,wincache 활용이나 캐시파일로 저장할 수 있음)
- context/Context.class.php : XE시스템의 전반적인 상황을 편리하게 읽어오거나 관리할 수 있는 클래스 (DB정보,언어변경,html헤더추가,js추가)
- db/DB.class.php : XML 쿼리를 읽고, DB에 접속하여, 쿼리를 수행하는 클래스 (Mysql,DBMysqli,DBCubrid등.. 다중DB를 활용할 수 있도록 전용 클래스가 있음)
- file/FileHandler.class.php : 파일을 읽거나 쓰기,수정,삭제등을 수행하는 클래스 (파일읽기,쓰기,삭제,이동, 폴더이동,생성 등..)
- widget/WidgetHandler.class.php : 위젯실행을 위한 위젯헤더 클래스 (현재 빈클래스)
- editor/EditorHandler.class.php : 에디터 컴포넌트의 에디터헤더 클래스 ( setInfo )
- module/ModuleObject.class.php : 모듈객체 클래스
- module/ModuleHandler.class.php : 모듈초기화,실행을 위한 클래스 (모듈 검색과 모듈파일을 불려옴)
- display/DisplayHandler.class.php : 화면에 모듈을 출력하기 위한 클래스 (ResponseMethod에 따라 HTML,JSON,XML 등으로 출력됨)
- template/TemplateHandler.class.php : XE문법이 들어간 HTML 템플릿파일을 PHP문법으로 변환(컴파일)하기위한 클래스
- mail/Mail.class.php : 메일전송을 위한 클래스 (phpmailer 라이브러리를 사용함)
- page/PageHandler.class.php : 페이지네이션 셋팅을 위한 클래스 (총 페이지 수 , 첫페이지,마지막페이지,현재페이지 등.. 셋팅)
- mobile/Mobile.class.php : 모바일을 위한 클래스 (모바일 체크함수들이 있음..)
- validator/Validator.class.php : ruleset으로 폼의 유효성을 체크하기 위한 클래스 (ruleset XML을 ruleset JS파일로 변환됨)
- frontendfile/FrontEndFileHandler.class.php : css,js 파일들을 효율적으로 불려오기위한 클래스 (불려오는 순서도 지정할 수 있음)
- security/Security.class.php : 보안에 도움을 주는 클래스 (php htmlspecialchars 함수와 같은 html인코딩함수가 있음)
- security/IpFilter.class.php : IP체크를 위한 클래스 (IP 유효성체크함수 , IP대역과 비교하는 함수가 있음)
꾸준히 들어와서 정독해야 될 명강의입니다 감사합니다!!