소개
1. 목적
- PHP프로그램으로부터 프레젠테이션 로직을 효과적으로 분리
- 페이지출력의 흐름에 따라 PHP코드를 삽입하는 형식 대신, 페이지구성요소 모듈화
- 사용할 요소들을 인덱싱하는 형태의 메인프로세스를 작성
- 디자이너에게는 동적데이터 처리를 위한 간결한 인터페이스 제공
2. 특징
- 템플릿파일을 php파일로 변환, php코어 엔진이 변환파일을 실행해 출력, 변환파일과 처리로직의 최적화로 강력한 성능 발휘
- 템플릿 파일 단위의 캐쉬지원 -> 부분적인 캐시적용이 가증
- 자바스크립트 문법을 따르는 표현식 언어를 지원, 표현식 내 php함수를 자유롭게 사용
- 사용자가 정의한 php함수, 클래스를 플러그인 파일로 저장 -> 템플릿 내에서 사용
- 제어구문의 최적화와 일관성, 단순한 명령어셋, 상대경로보정필터
문법
1. 태그
템플릿 파일내에서 템플릿엔진이 해석할 위치를 표시
{ }. <!--{ } , { }-->, <!--{ }-->
2. 템플릿 파일 정의, 템플릿 변수 할당, 출력
define ( ) — 사용할 템플릿 파일의 아이디를 정의
assign ( ) — 템플릿 변수에 값을 할당
print_ ( ) — 출력
= — 템플릿변수의 값을 출력. 템플릿태그 내에서 함수를 사용하지 않을 때는 출력명령어 생략 가능
<?php
include 'Template_.class.php';
$tpl = new Template_;
$tpl->define('index', 'index.tpl');
$tpl->assign(array(
'title' =>'First Template_',
'content'=>'Fill me in',
));
$tpl->print_('index');
?>
<html>
<head>
<title>{title}</title>
</head>
<body>
{content}
</body>
</html>
3. 루프
@ — 루프의 시작
: — 루프가 돌지 않았을 때 출력
/ — 루프의 끝
<?php
include 'Template_.class.php';
$tpl = new Template_;
$tpl->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');
?>
<table>
<tr><td colspan=2> {title} </td></tr>
<tr><td> exponent </td><td> 2^exponent </td></tr>
<!--{@ row}-->
<tr><td> {row.exponent} </td><td> {row.power} </td></tr>
<!--{/}-->
</table>
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. 캐슁
캐쉬를 사용해 한 번 출력했던 결과물을 저장하고, 같은 출력이 필요할 때 실행을 생략하고 결과물 출력
'컴퓨터공학 > 프로그래밍' 카테고리의 다른 글
파이썬 언어 특징, 개발 환경과 패키지 (96) | 2024.04.17 |
---|---|
블록 코딩 플랫폼 소개 - 스크래치, 엔트리 (16) | 2023.02.21 |
파이썬 | 반복문(while, for) 조건문 (6) | 2022.11.15 |
객체지향 프로그래밍 개념 (0) | 2021.01.01 |
프로그래밍 언어 공통 기초 지식 (0) | 2020.12.08 |
PHP | 소스 그대로 보일 경우 해결방법 (2) | 2020.10.19 |
C# | ref. 언어참조 : 키워드와 데이터 형식 (0) | 2020.02.07 |
C# | ref. 프로그래밍 가이드 (0) | 2020.02.07 |
댓글