on
템플릿 언더바 (Template_) 기초
템플릿 언더바 (Template_) 기초
소개
1. 목적
PHP프로그램으로부터 프레젠테이션 로직을 효과적으로 분리
페이지출력의 흐름에 따라 PHP코드를 삽입하는 형식 대신, 페이지구성요소 모듈화
사용할 요소들을 인덱싱하는 형태의 메인프로세스를 작성
디자이너에게는 동적데이터 처리를 위한 간결한 인터페이스 제공
2. 특징
템플릿파일을 php파일로 변환, php코어 엔진이 변환파일을 실행해 출력, 변환파일과 처리로직의 최적화로 강력한 성능 발휘
템플릿 파일 단위의 캐쉬지원 -> 부분적인 캐시적용이 가증
자바스크립트 문법을 따르는 표현식 언어를 지원, 표현식 내 php함수를 자유롭게 사용
사용자가 정의한 php함수, 클래스를 플러그인 파일로 저장 -> 템플릿 내에서 사용
제어구문의 최적화와 일관성, 단순한 명령어셋, 상대경로보정필터
문법
1. 태그
템플릿 파일내에서 템플릿엔진이 해석할 위치를 표시
{ }. ,
2. 템플릿 파일 정의, 템플릿 변수 할당, 출력
define ( ) — 사용할 템플릿 파일의 아이디를 정의
assign ( ) — 템플릿 변수에 값을 할당
print_ ( ) — 출력
= — 템플릿변수의 값을 출력. 템플릿태그 내에서 함수를 사용하지 않을 때는 출력명령어 생략 가능
define('index', 'index.tpl'); $tpl->assign(array( 'title' =>'First Template_', 'content'=>'Fill me in', )); $tpl->print_('index'); ?> {title} {content}
3. 루프
@ — 루프의 시작
: — 루프가 돌지 않았을 때 출력
/ — 루프의 끝
define('index', 'index.tpl'); $tpl->assign('title', 'power of 2'); $loop = array(); for ($i=1; $i<=3; $i++) { $loop[] = array( // or 'exponent'=>$i, // $loop[$i]['exponent']=$i; 'power' =>pow(2, $i), // $loop[$i]['power'] =pow(2, $i); ); // } $tpl->assign('row', $loop); $tpl->print_('index'); ?> {title} exponent 2^exponent {row.exponent} {row.power}
4. 하위템플릿 인클루드
# — 하위템플릿파일 인클루드
5. 표현식
자바스크립트 문법을 따르는 표현식 자유롭게 작성 (할당연산자, 예약어연산자 등을 제외)
6. 이스케이프
\ — 템플릿 코드를 그대로 출력
7. 루프 (예약변수)
index_ — 0부터 시작, 루프가 반복할 때 1씩 증가
size_ — 루프의 전체 반복 회수
key_ — 루프로 할당된 배열의 키
value_ — 루프로 할당된 배열의 값
8. 분기 if
? — if
: — elseif, else
/ — endif
9. 배열
배열요소를 하나하나 할당하지 않고 배열자체를 하나의 템플릿 변수로 할당
10. 템플릿변수 할당생략
템플릿 변수명이 언더바로 시작하면 실행파일내 전역변수의 값을 가지며 이 때는 assign() 하지 않습니다.
11. 함수
php함수를 php문법대로 사용. 함수사용 시 출력명령어 '=' 는 생략할 수 없습니다.
12. 상수
c. — 뒤에 붙은 아이디가 상수
13. 객체
-> — 객체 또한 표현식의 구성요소로 자유롭게 사용
14. 분기 switch
? [:] — switch
: — case, default
/ — endswitch
15. 루프 (표현식)
16. php 코딩
템플릿 파일 내에서 php코드를 사용할 수 있고 php코드 내에서 템플릿 변수를 사용하거나 템플릿 변수에 값을 할당 가능
17. 주석
// — 꼬리말형 주석
* — 블럭형 주석
18. 매크로
#define — 문자열 치환 정의
19. 프리필터
프리필터함수는 템플릿주석삭제 및 매크로처리된 템플릿소스를 첫번째 인자로 받아, 가공해서 리턴
20. 상대경로 자동보정
adjustPath — 템플릿파일내 상대경로를 절대경로로 변환
21. 템플릿파일 분할
템플릿 분할 기능을 사용해 여러 개의 템플릿을 한 파일에 작성
22. 스코핑
setScope () — 이 메서드를 사용하여 템플릿을 캡슐화하여 모듈간 템플릿 변수의 충돌을 방지
23. 캐슁
캐쉬를 사용해 한 번 출력했던 결과물을 저장하고, 같은 출력이 필요할 때 실행을 생략하고 결과물 출력
from http://sanctacrux.tistory.com/1240 by ccl(A) rewrite - 2021-06-10 12:00:12