개요[편집 / 원본 편집]
라이믹스 프레임워크는 모듈과 테마 등을 구동하는 핵심 기능을 제공하는 부분이다. 일부 기능은 모듈에 위임하지만, 프레임워크에 포함된 대부분의 클래스와 함수는 특정 모듈에 종속되지 않고 독립적으로 쓸 수 있다.[1]
크게 네 부분으로 이루어져 있다.[1]
Rhymix\Framework네임스페이스에 속한 클래스- XE 1.x에서 물려받은 레거시 전역 클래스
- 전역 함수
- 공통 상수
레거시 클래스는 서드파티 자료의 하위 호환성을 위해 남아 있으나 점차 Rhymix\Framework로 흡수되고 있으며, 이미 껍데기만 남아 별칭 역할만 하는 것도 있다. 장기적으로 Context를 제외한 모든 전역 클래스는 지원이 중단될 예정이다.[1]
코어 클래스[편집 / 원본 편집]
Rhymix\Framework 네임스페이스에 속한 클래스이다. 이름 뒤에 (*)가 붙은 것은 인스턴스를 만들어 사용하고, 나머지는 static으로 사용한다.[1]
| 클래스 | 설명 |
|---|---|
| Cache | 처리 속도 향상을 위한 캐시 처리 |
| Calendar | 달력 UI 제작에 쓰는 유틸리티 함수 |
| Config | 시스템 설정의 로딩, 변환, 저장 |
| Cookie | 쿠키 생성과 조회 |
| DateTime | 날짜·시간 형식 변환과 표준 시간대 처리 |
| DB (*) | DB 접속과 관리, XML 쿼리 및 커스텀 쿼리 실행 |
| Debug | 디버그 관련 기능 |
| Exception (*) | 라이믹스 공통 예외 클래스. \Exception을 상속한다
|
| Formatter | 텍스트와 HTML의 상호 변환, SCSS 컴파일, 압축 및 합치기 |
| HTTP | API 호출, 크롤링, 파일 다운로드 등 외부 리소스 가져오기 |
| i18n | 표준화된 국가 및 언어 목록 제공 |
| Image | 이미지 포맷 감지 및 변환 |
| Korea | 국내 전화번호 유효성 확인과 형식 변환 등 |
| Lang (*) | 다국어 기능 |
| Mail (*) | 이메일 발송 |
| MIME | 파일 타입 파악과 확장자 처리 |
| Pagination | 페이지 분할 유틸리티 |
| Password | 여러 형식의 비밀번호 암호화와 검증 |
| Push (*) | 푸시 알림 발송 |
| Queue | 비동기 작업의 생성, 관리, 실행. 실행에는 크론 설정이 필요하다. 라이믹스/매뉴얼/Crontab 설정 방법 참고 |
| Request (*) | 하나의 HTTP 요청을 표현. Router가 이 클래스의 인스턴스를 반환한다
|
| Router | 짧은주소 처리. 라이믹스/라우터 문서 참고 |
| Security | 랜덤 문자열 생성, 암호화, 전자서명, CSRF 방어 |
| Session | 세션 처리 |
| SMS (*) | SMS 발송 |
| Storage | 파일과 디렉터리를 안전하게 다루는 유틸리티 |
| Template (*) | 템플릿 로딩, 컴파일, 출력. 라이믹스/매뉴얼/템플릿 문법 v2 참고 |
| Timer | 작업 소요 시간 측정 |
| UA | User-Agent 해석과 그에 따른 구분
|
| URL | URL 해석과 변환 |
예외 클래스[편집 / 원본 편집]
Rhymix\Framework\Exceptions 네임스페이스에 있다. 모두 Rhymix\Framework\Exception을 상속하며 용도에 따라 골라 쓴다.[1]
| 클래스 | 용도 |
|---|---|
| DBError | DB 접속 오류 등 |
| FeatureDisabled | 사용할 수 없는 기능 |
| InvalidRequest | 잘못된 요청 |
| MustLogin | 로그인이 필요함 |
| NotPermitted | 권한이 없음 |
| QueryError | DB 쿼리 오류 |
| SecurityViolation | 보안 정책상 허용되지 않음 |
| TargetNotFound | 대상을 찾을 수 없음 |
필터 클래스[편집 / 원본 편집]
Rhymix\Framework\Filters 네임스페이스에 있다. 신뢰할 수 없는 외부 입력값을 처리하는 최전방에 위치하여 라이믹스의 보안에서 핵심적인 역할을 한다.[1]
| 클래스 | 역할 |
|---|---|
| FileContentFilter | 업로드된 파일의 내용에 따른 상세 필터링 |
| FilenameFilter | 파일명 필터링 |
| HTMLFilter | XSS 방지를 위한 HTML 태그 및 속성 필터링 |
| IpFilter | IP 주소 필터링 (허용·차단 목록) |
| MediaFilter | iframe 등으로 본문에 삽입된 외부 미디어의 URL 필터링 |
그 밖의 네임스페이스[편집 / 원본 편집]
Rhymix\Framework\Drivers— 메일, SMS 발송이나 서버 환경별 캐시 사용을 위한 드라이버가 용도별로 분류되어 있다.Rhymix\Framework\Helpers— 프레임워크의 다른 영역에서 필요할 때 임의로 선언하여 쓰는 도우미 클래스.Rhymix\Framework\Parsers— 템플릿과 쿼리를 비롯한 여러 파일을 해석하여 적절한 형태로 변환한다.[1]
레거시 클래스[편집 / 원본 편집]
XE 1.x부터 존재해 온 전역 클래스이다.[2]
| 클래스 | 설명 |
|---|---|
| BaseObject | 모듈, DB 쿼리, 이벤트 핸들러 등의 반환값을 담는 데 사용 |
| Context | 요청의 전반적인 환경 관리, 전역변수 관리, 응답 작성 메소드 제공 |
| FrontEndFileHandler | HTML 응답에 사용할 CSS, JS 리소스 관리 |
| ModuleHandler | 모듈 라이프사이클 관리 |
| ModuleObject | 모든 모듈 클래스의 기초가 되는 클래스 |
| DisplayHandler | 응답 렌더링 |
| FileHandler | 대부분 Storage로 대체 가능하나 일부 기능이 유지되고 있다
|
| Mobile | 대부분 UA로 대체 가능하나 일부 기능이 유지되고 있다
|
- ※
BaseObject는 PHP 7.2부터Object가 예약어가 되면서 이름이 바뀐 것이다. 오래된 서드파티 자료에서 발생하는 관련 오류는 설치 환경 문서를 참고하자.
공통 상수[편집 / 원본 편집]
실행 환경[편집 / 원본 편집]
설치 경로, 버전, 접속 환경 정보가 필요할 때는 다른 파일을 해석하거나 $_SERVER 같은 전역변수를 참조하기보다 아래 상수를 쓰는 것이 권장된다.[1]
| 상수 | 설명 |
|---|---|
RX_VERSION |
라이믹스 버전 |
RX_MICROTIME |
실행 시작 시간 (유닉스 타임스탬프, 마이크로초까지) |
RX_TIME |
실행 시작 시간 (유닉스 타임스탬프, 정수) |
RX_BASEDIR |
설치된 서버 파일시스템 절대경로 (마지막 슬래시 있음) |
RX_BASEURL |
설치된 URL의 절대경로 (마지막 슬래시 있음) |
RX_REQUEST_URL |
현재 요청 URL에서 RX_BASEURL을 제외한 나머지
|
RX_CLIENT_IP |
현재 방문자의 IP 주소 |
RX_CLIENT_IP_VERSION |
방문자 IP가 IPv4면 4, IPv6면 6
|
RX_SSL |
현재 요청이 SSL/TLS를 사용하면 true
|
RX_POST |
현재 요청이 POST면 true
|
RX_WINDOWS |
윈도우 서버면 true
|
문서 상태값[편집 / 원본 편집]
문서나 댓글의 상태를 표현하는 값이다. 현재 PUBLIC과 SECRET이 코어에 구현되어 있고, 나머지는 서드파티 자료가 공통으로 쓰도록 미리 선언해 둔 표준이다.[1]
| 상수 | 값 | 상수 | 값 |
|---|---|---|---|
RX_STATUS_TEMP |
0 | RX_STATUS_CENSORED |
5 |
RX_STATUS_PUBLIC |
1 | RX_STATUS_CENSORED_BY_ADMIN |
6 |
RX_STATUS_SECRET |
2 | RX_STATUS_DELETED |
7 |
RX_STATUS_EMBARGO |
3 | RX_STATUS_DELETED_BY_ADMIN |
8 |
RX_STATUS_TRASH |
4 | RX_STATUS_OTHER |
9 |
RX_STATUS_PRIVATE |
10 |
이 밖에 DIGITS, XDIGITS, ALPHABETS, UPPER, LOWER 같은 문자 범위 상수와 CR, LF, CRLF 개행 문자 상수가 선언되어 있다.[1]
XE 호환용 상수[편집 / 원본 편집]
__XE__, __XE_VERSION__, _XE_PATH_, Y, N 등 XE 시절의 상수도 호환을 위해 제공되지만, 더 이상 사용하지 않는 것이 권장된다.[1]