본문 바로가기
컴퓨터공학/프로그래밍

템플릿 언더바 (Template_) 기초

by KISCH 2021. 6. 10.
반응형
 

 

 

소개

 

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. 캐슁

캐쉬를 사용해 한 번 출력했던 결과물을 저장하고, 같은 출력이 필요할 때 실행을 생략하고 결과물 출력

 

 

템플릿언더바

 

 

 

반응형

댓글