XpressEngine

[기초] XE구조의 비밀 그 두번째 - Core의 구성폴더와 파일을 찾아서...

첫번째 시간에는 index.php에 대해서 알아보았는 데요.. 한마디로 정리하자면..."index.php는 XE구성파일을 불려와 실행하는 실행파일이다.."

이번에는 XE의 전체적인 그림을 살펴볼려고 해요..

각각의 구성폴더와 파일이 무슨역할을 하는 지 알아보겠습니다..


1. Core의 구성폴더를 찾아서...

XE 구성폴더와 그 역할은 다음과 같습니다.

1.png

더 자세히 얘기해보도록하죠..

  • 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대역과 비교하는 함수가 있음)



Atachment
첨부 1
  • ?
    날아라 2014.02.23 21:06:10
    정말 감탄을 안할래야 안할수가 없습니다 ㅠ
    꾸준히 들어와서 정독해야 될 명강의입니다 감사합니다!!
  • ?
    다이오니 2015.01.30 09:51:25
    와.. 내용들이 유용하네요.
?