디자인과 로직의 분리를 위한 템플릿 엔진「Smarty」

일반입력 :2002/09/27 00:00

조한석

'PHP와 템플릿'이라는 주제는 'PHP와 OOP'와 더불어 많은 PHP 프로그래머에게 가장 뜨거운 감자 중 하나임에 틀림없다. 손쉽게 HTML 문서를 만들어낼 수 있는 삽입 언어(Embedded Language)인 PHP에서 굳이 템플릿 방식의 코딩을 해야 하는가? 그것은 웹 애플리케이션 작성을 너무 어렵게 한다라는 의견과 삽입 언어인 PHP는 디자인과 로직의 경계가 명확하지 않고, 프로그래머와 디자이너가 분리된 환경에서는 작업 능률을 떨어뜨린다라는 두 가지 견해는 극히 개인적인 취향에 좌우되는 것이기에 어느 쪽이 옳다고 판단할 수 없다. 필자가 이 글을 읽는 PHP 프로그래머에게 하고 싶은 말은 자신에게 맞는 방법과 도구를 찾으라는 것이다(굳이 말하자면 필자는 많은 템플릿 옹호론자 중 한 사람이다). 그럼 앞으로 6회에 걸쳐 Smarty라는 멋진 템플릿 엔진에 대해 소개하도록 하겠다.

'어설픈' 템플릿은 사용하지 말자

필자는 마소 Jr.에서 PHP 강좌를 진행하면서 템플릿 개념이 아직 완전하지 않던 시절에 작성된 템플릿 엔진(FastTemplate이나 PHPLib의 템플릿 엔진)과 유사한 형태를 갖고 있었던 PEAR의 IT(IntegratedTemplate) 클래스를 소개한 적이 있다. 다음의 <리스트 1>은 중첩된 동적 블럭을 사용한 IT 템플릿과 그것을 제어하는 PHP 코드인데, 템플릿 내의 동적 블럭 구조를 제어하기 위한 반복문이 들어가야 함을 알 수 있을 것이다. '디자인과 코드의 분리'라는 숭고한 목적은 어디로 갔을까? 불행히도 IT 클래스를 포함한 대다수의 템플릿 엔진은 이것을 제대로 지키지 못해 템플릿 예찬론자들을 쑥스럽게 만드는 것이 사실이다.

그리고 많은 시스템 부하가 걸리기 마련인 서버 상에서 똑같은 HTML을 만들어 내는데, 한가롭게 정규표현식을 갖고 문장을 탐사하고 있는 것은 CPU와 메모리의 부담을 생각하지 않는 '사치'라고도 할 수 있다(<그림 1> 참조). 분명히 템플릿이라는 개념과 무관하게 작성된 순수한 PHP 스크립트는 빠르다. 하지만 템플릿 엔진을 사용하고 있는 PHP 스크립트라면 얘기가 달라진다. 아마도 템플릿 엔진에서 템플릿을 처리하느라 정규표현 함수에서 낑낑대다가 겨우겨우 출력물을 만들어 보고하는 동안 PHP 코드는 이미 웹 서버에게 대여섯 번은 출력물을 보고하고 있을 것이다. 이것 역시 기존의 그리고 대다수의 템플릿 엔진이 갖고 있는 한계였다.

<리스트 1> 중첩된 동적 블럭을 사용한 템플릿과 PHP 코드

it.tpl

1

2

3

4

5

6

9

10

11

12

7 {DATA}

8

13

it.php

1

2 require_once HTML/IT.php;

3

4 $data = array

5 (

6 0 => array(Stig, Bakken),

7 1 => array(Martin, Jansen),

8 2 => array(Alexander, Merz)

9 );

10

11 $tpl = new IntegratedTemplate(./);

12 $tpl->loadTemplatefile(it.tpl, true, true);

13

14 // 템플릿의 동적 블럭을 처리하기 위해

15 // PHP 코드가 템플릿의 구조를 따라가야만 한다.

16 foreach($data as $name) {

17 foreach($name as $cell) {

18 // Assign data to the inner block

19 $tpl->setCurrentBlock(cell) ;

20 $tpl->setVariable(DATA, $cell) ;

21 $tpl->parseCurrentBlock(cell) ;

22 }

23 // Assign data and the inner block to the

24 // outer block

25 $tpl->setCurrentBlock(row) ;

26 $tpl->parseCurrentBlock(row) ;

27 }

28 // print the output

29 $tpl->show();

30 ?>

Smarty란 무엇인가?

앞에서 말한 것을 다시 한 번 반복하자면, PHP 코드는 분명히 빠르다. 그렇다면 템플릿을 실행시킬 때마다 매번 정규표현을 사용해가며 출력물을 만들기보다는 차라리 처음 실행할 때 PHP 코드로 컴파일해 주고, 다음부터는 컴파일된 템플릿을 PHP가 직접 실행하도록 하면 어떨까? 이것이 ISPI라는 회사의 PHP 프로그래머들이 만든 Smarty라는 템플릿 엔진의 핵심이다(<그림 2> 참조). 그렇다고 Smarty가 단순히 다른 템플릿 엔진보다 빠르기만 한 녀석이었다면 필자에게 관심의 대상이 될지언정 열광의 대상은 될 수 없었을 것이다. 템플릿 엔진의 '실행시 성능과 효율'도 중요하지만 이미 말한 것처럼 템플릿을 사용하는 애초의 목적은 디자인과 로직의 분리이다. Smarty는 디자인과 로직의 분리를 완벽하게 가능하게 해 주는가라는 질문에 필자는 적어도 여타의 템플릿 엔진보다는 체계적이라고 말해 줄 수 있을 것 같다. 여타의 경쟁자들에 비해 빠르고 또한 체계적인 Smarty의 특징들을 매뉴얼에 있는 그대로 옮겨보면 다음과 같은데, 들여다보면 볼 수록 PHP와 Smarty의 관계는 자바와 JSP와의 관계와 동작 방식에서 약간의 차이는 있지만, 개념적으로는 비슷하다는 것을 알 수 있을 것이다(JSP에서는 jsp 파일들이 요청의 대상이 되지만, smarty 템플릿들이 요청의 대상이 되는 것이 아니라 이를 처리하는 PHP 스크립트가 요청의 대상이 된다).

◆ 놀라울 정도로 빠르다.

◆ PHP 파서로서 동작하기 때문에 효율적이다.

◆ 템플릿 파일을 파싱하는 오버헤드가 없고, 오직 한 번 컴파일하는 시간이 필요할 뿐이다.

◆ 템플릿 파일들이 바뀌는 경우만 재 컴파일을 수행할 정도로 영리하다.

◆ 커스텀 함수와 커스텀 변수 변환자를 추가해서 템플릿 언어를 손쉽게 확장할 수 있다.

◆ 템플릿 태그 문법을 {}, {{}}, 와 같이 사용하고 싶은 것으로 바꿀 수 있다.

◆ {if}와 같은 동적 블럭 문장을 원하는 대로 복잡 혹은 간단하게 중첩시켜 만들 수 있다.

◆ Section이나 If와 같은 동적 블럭을 중첩하는데 제한이 없다.

◆ 템플릿 파일에 PHP 코드를 내장하는 것도 가능하다(이것을 권장하는 것은 아니다).

◆ 내장된 캐싱 시스템을 지원한다.

◆ 독자적인 템플릿 소스들을 갖고 있다.

◆ 캐싱 핸들링 함수를 커스텀화하는 것이 가능하다.

◆ 플러그인을 추가하는 것이 가능하다.

Smarty 설치하기

Smarty는 'the compiling template engine for PHP'이다. 두말할 나위 없이 Smarty를 설치하기 이전에 여러분은 PHP를 설치하고 설정하는 방법을 알아야 한다(하지만 이 글에서는 이 부분에 대한 설명을 하지 않는다). 그렇다면 PHP는? PHP는 어쨌거나 'Server-side scripting language'이므로(예전 매뉴얼에는 PHP를 이렇게 기술했지만 최근의 매뉴얼에서는 'General-purpose scripting language'로 바뀌었다) 여러분들은 PHP와 연동이 가능한 웹 서버를 설치하고 설정하는 방법에 대해서도 알고 있어야 한다. 이 부분 역시 여러분들이 이미 알고 있다고 가정하겠다. MySql과 같은 데이터베이스는? 이건 Smarty하고는 별 상관이 없고 그다지 필요하지 않으며 분명한 것은 4.0.6 이상의 버전의 PHP가 꼭 필요하다는 것이다(필자는 이 글의 내용을 PHP 4.2.2에서 테스트했다).

또한 여러분이 운영하고 있는 OS 환경의 파일 퍼미션에 대해 이해하고 있어야 한다. 특히 파일의 소유주와 쓰기 퍼미션의 관계에 대한 이해가 정말로 필요하다. 모든 OS에 대한 것을 설명하기에는 필자에게 주어진 시간과 환경이 허락하지 않는 관계로 리눅스 환경(RedHat 7.3)을 중심으로 설명할 것이다. 하지만 아마도 유닉스 계열의 환경이라면 대부분 그대로 따라하는 것으로 Smarty 설치와 설정을 끝낼 수 있다. 제일 먼저 Smarty를 구해야 할 텐데, 가장 최근의 Smarty는 http://cvs.php.net에서 CVS로 존재하고 있고 가장 최신의 릴리즈된 버전은 http://smarty.php.net/download.php에서 구할 수 있다.

◆ http://smarty.php.net/do_download.php?download_file=Smarty-2.3.0.tar.gz

가장 최근 버전은 앞에 나온 대로 2.3.0인데 다음처럼 압축을 풀기 전에 여러분이 루트 권한을 갖고 있는지 확인해 보기 바란다. 루트 권한이 없다면 뒤에 나오는 계정 사용자를 위한 설치 방법을 읽어야겠지만, 그렇다고 해도 여러분들이 지금부터 진행되는 글을 읽지 않고 넘어가면 곤란해질 수도 있다.

$ tar xvzf Smarty-2.3.0.tar.gz

$ cd Smarty-2.3.0

Smarty-2.3.0 디렉토리 안을 살펴보면 몇몇 클래스 파일들과 디렉토리들이 있는데, 다음 나열되는 파일들은 Smarty 템플릿 엔진을 정상적으로 하기 위해 꼭 필요한 것들이다.

◆ Smarty.class.php

◆ Smarty_Compiler.class.php

◆ Config_File.class.php

◆ debug.tpl

◆ plugins/* (디렉토리 안의 모든 파일)

이 파일들을 적절한 디렉토리로 옮겨 보겠다. 필자의 경우 '/usr/share/php/Smarty'를 타겟으로 삼았는데 별다른 이유는 없고, 단지 '/usr/share/php' 디렉토리 안에 PEAR가 있었기 때문이다(PEAR에 대한 관심이 큰 필자의 입장에서 볼 때는 불만인 것 중 하나는 Smarty가 당분간 PEAR 안으로 이사갈 것 같지는 않아 보인다는 점이다).

$ mkdir /usr/share/php/Smarty

$ cp -rf *.class.php debug.tpl plugins/ /usr/share/php/Smarty

설정이 끝난 후 여러분의 PHP 스크립트에 포함하는 것이 필요한데, Smarty는 클래스의 경로 문제를 해결하기 위해 두 가지 방법을 제공한다. 우선 첫 번째 방법은 여러분의 PHP include_path에 '/usr/share/php/Smarty'를 추가하는 것이다(다음은 필자의 PHP 설정 내용이므로 여러분의 시스템에 맞게 수정하기 바란다).

◆ include_path = .:/usr/share/php/PEAR:/usr/share/php/Smarty

이런 후 PHP 스크립트 앞 부분에 다음과 같이 적어주면 PHP 실행기는 자동으로 'Smarty.class.php' 파일을 찾을 수 있을 것이다(만약 서버 모듈로서 PHP를 사용중이라면 웹 서버를 재 가동시켜야 한다).

require_once(Smarty.class.php);

$smarty = new Smarty;

혹은 PHP 스크립트에 SMARTY_DIR 상수를 정의한 후 이것과 함께 'Smarty.class.php'를 불러오는 방법을 사용할 수도 있는데, 이 때 SMARTY_DIR에 정의되는 경로는 여러분의 OS에 맞는 것이야 하고 또한 끝에 반드시 슬래시를 붙여줘야 한다. 참고로 앞의 방식대로 SMARTY_DIR을 지정하지 않는 경우, 이 상수는 자동으로 'Smarty.class.php'가 위치한 디렉토리가 지정되게 된다(이 방식을 사용할 경우 웹 서버를 재 가동시키지 않아도 된다).

define(SMARTY_DIR, /usr/share/php/Smarty/);

require_once(SMARTY_DIR . Smarty.class.php);

$smarty = new Smarty;

기본적인 Smarty 환경 설정하기

보통의 템플릿 엔진이라면 아마도 여기서 적당한 템플릿 디렉토리를 만들고 바로 템플릿 예제들과 이를 제어하는 PHP 코드들에 대해 설명해야 할 테지만, Smarty를 정상적으로 가동시키기 위해서는 아직 먼 길을 가야 한다. 앞에서 $smarty라는 객체를 만들었는데, 이것은 다음과 같은 뜻을 가진 멤버 변수들을 포함하고 있다.

◆ $config_dir : 템플릿에서 찾을 설정 파일들이 위치한 디렉토리를 가리킨다(템플릿에서 사용하지 않는 한 필요 없는 디렉토리이다).

◆ $template_dir : 스크립트에서 찾을 템플릿 파일들이 위치한 디렉토리를 가리킨다(필수적인 디렉토리지만 쓰기가 가능할 필요는 없다).

◆ $compile_dir : 컴파일된 템플릿들이 위치할 디렉토리를 가리킨다(필수적이고 쓰기가 가능해야 한다).

◆ $cache_dir : 캐시된 템플릿 결과물이 위치할 디렉토리를 가리킨다(캐쉬 기능을 사용할 경우 필요하고 쓰기가 가능해야 한다).

각 멤버 변수들이 가리키는 디렉토리를 사전에 만들어주고 일부 디렉토리는 쓰기가 가능해야 한다. 필자는 이 디렉토리들을 '/var/www/php/Smarty/'라는 디렉토리 하에 만들 생각인데, 이것 역시 여러분의 취향에 따라 달라질 수 있다. 하지만 아무리 취향이 그렇다고 해서 이들 디렉토리를 문서 루트 디렉토리처럼 외부로부터 접근이 가능한 디렉토리 아래에 두는 것은 가급적 피하는 것이 좋다. 그리고 참고로 이들 멤버 변수들에 별도로 값을 지정하지 않는다면 기본적으로 현재 실행중인 스크립트의 디렉토리 밑에 있는 './configs/', './templates/', './templates_c/', './cache/' 디렉토리가 지정되게 된다.

$ mkdir /var/www/php

$ mkdir /var/www/php/Smarty

$ cd /var/www/php/Smarty

$ mkdir configs templates templates_c cache

앞과 같이 디렉토리를 만든 후 templates_c와 cache 디렉토리의 소유주를 여러분이 사용하고 있는 웹 서버가 작동할 때의 프로세스와 소유주를 일치시키고 쓰기가 가능하도록 파일 퍼미션을 수정하는 과정을 거쳐야 한다. 보통의 유닉스에서는 nobody:nobody이지만, 필자가 사용하는 것은 apache:apache인 것처럼 이것은 시스템마다 다르므로 여러분은 사용하고 있는 웹 서버 프로세스의 소유주와 그룹 아이디를 확인한 뒤 각자에 알맞게 수정하기 바란다.

$ chown apache:apache templates_c/ cache/

$ chmod 770 templates_c/ cache/

그런데 앞과 같이 파일 퍼미션을 주면 일반 사용자가 셸 상에서 Smarty 템플릿 엔진을 시험하는 스크립트를 작동시킬 때는 templates_c/와 cache/에 쓰기가 불가능하므로 Smarty에서는 컴파일 시 쓰기 에러를 내고 작동을 멈추게 된다. 이런 이유로 아래처럼 모든 유저가 쓰기가 가능하도록 수정할 수도 있으나, 시스템 보안상 썩 바람직한 것은 아니다.

$ chmod 777 templates_c/ cache/

Smarty가 제대로 동작하는지 확인하기

이제는 Smarty가 제대로 설치되고 설정됐는지 확인해 볼 차례이다. <리스트 2>의 index.php 파일을 여러분의 문서 루트 디렉토리에 옮겨 놓고, <리스트 3>의 index.tpl 파일은 앞에서 만든 '/var/www/php/Smarty/templates'에 옮기고 나서 웹 브라우저를 통해 index.php를 수행시켜 보길 바란다. 브라우저에 'Hello, Sizer!'라는 메시지를 받으면 지금까지 제대로 따라왔다는 것이고 그렇지 않다면 무엇인가를 놓치고 진행했다는 소리다. 처음으로 돌아가서 차근차근 잘 따라했는지 확인해야 할 것이다.

<리스트 2> index.php

1

2

3 require_once(Smarty.class.php);

4

5 $smarty = new Smarty;

6 $smarty->caching = true; // 캐쉬 기능을 활성화시킨다.

7

8 $smarty->assign(Name,Sizer);

9 $smarty->display(index.tpl);

10

11 ?>

<리스트 3> index.tpl

1

2 Hello

3

4 Hello, {$Name}!

5

6

계정 사용자를 위한 Smarty 설치와 설정 방법

앞에서 소개한 Smarty 설치 방법은 루트 권한을 가진 사용자만을 고려한 것인데, 계정 사용자의 경우 어떻게 Smarty를 설치하고 설정하면 좋은지 알아보도록 하겠다. 일단 여러분의 사용자 웹 디렉토리를 '$HOME/ public_htm/''으로, Smarty를 설치할 곳은 '$HOME/php/Smarty'로 가정하도록 하겠다. 임의의 디렉토리에 Smarty 압축 파일을 풀었다면 다음과 같이 우선 Smarty를 설치하도록 하자.

$ cd ~

$ mkdir php

$ mkdir php/Smarty

$ cd /your/smarty/source/path

$ cp -rf *.class.php debug.tpl plugins/ ~/php/Smarty

물론 '∼/php/Smarty'가 PHP 설정 파일(php.ini)의 include_path 항목에 포함돼 있을 가능성은 전무하고 또한 서버 관리자에게 이것을 include_path로 걸어달라고 해도 맞지 않을 게 뻔하므로 SMARTY_DIR 상수를 PHP 스크립트에 정의하는 방법을 사용해야 한다. 여기서 앞의 내용을 잘 읽어봤다면 적어도 'templates_c/' 디렉토리가 어딘가에 존재해야 하고 또한 쓰기 가능해야 한다는 것을 눈치챌 것이다. 일단 필요한 디렉토리들은 다 만들어 보자.

$ cd ~/php/Smarty

$ mkdir configs templates templates_c cache

여기서 'templates_c/'와 'cache/'를 어떻게 처리해야 할지 잠시 고민을 해야 하는데, 한순간의 편의를 위해 아무나 쓰기 가능하도록 하는 것은 위험 부담이 너무 크므로 관리자에게 이 디렉토리들의 소유주와 퍼미션을 웹 서버와 일치시켜달라는 부탁 메일을 날리는 방법이 제일 안전할 것이라고 생각할지도 모르겠다. 하지만 이 방법에는 큰 단점이 있는데, 'templates_c/' 디렉토리의 소유주가 웹 서버이므로 Smarty가 임시로 만든 컴파일 파일들을 마음대로 지울 수가 없다는 점이 그것이다. 만약 여러분이 'templates_c/' 아래 디렉토리에 생긴 파일들을 지우고 싶다면 따로 PHP 스크립트를 작성한 뒤 웹 서버를 통해 그것을 실행시켜야 한다(Smarty 클래스에는 이런 기능을 수행하는 메쏘드가 있으며, 나중에 설명하도록 하겠다).

그래도 다소 불편하다고는 하지만 'templates_c/' 디렉토리의 파일 퍼미션을 777로 만들어서 위험을 자초할 필요는 없지 않을까라고 생각하는 사람도 있을 것이다. 여기서 한 가지 유용한 팁을 소개하자면, 우선 Smarty가 템플릿을 오직 한 번 컴파일하고 그 다음에는 컴파일된 PHP 코드를 실행시킨다는 점을 떠올려 보자. 이렇게 컴파일된 PHP 코드를 실행시키는 데는 읽기 권한만 있으면 족하다. 쓰기 권한이 필요한 이유는 최초의 컴파일 결과인 PHP 코드를 'templates_c/' 디렉토리 아래에 저장해 놓기 위해서일 뿐이다.

그러므로 일단 'templates_c/' 디렉토리의 권한을 우선은 777로 만든 다음 테스트를 하다가 템플릿과 PHP 코드가 완전하다고 생각될 때, 'templates_c/' 디렉토리의 쓰기 권한을 봉쇄하는 방법(chmod -R 755 templates_c정도의 명령)을 사용할 수 있다. 단, 이 방법은 주기적으로 내용이 업데이트되어야 하는 'cache/' 디렉토리에는 사용할 수 없다. 하지만 그렇다고 계정 사용자는 캐시 기능을 안전하게 사용하지 못 하는 것은 아니다. 캐시가 꼭 필요한 계정 사용자의 경우 저장 장소를 파일이 아닌 데이터베이스로 바꾸는 방법을 사용할 수도 있기 때문이다.

<리스트 4>는 지금까지의 설정 내용을 테스트하기 위해 Smarty 클래스의 객체 $smarty를 생성한 뒤 각각의 멤버변수들을 하나하나 일일이 수동으로 수정해 사용하고 있는데, 사실 이것보다 더 간편하면서도 유용한 방법이 있다.

<리스트 4> user_index.php

1

2

3 define(SMARTY_DIR, /home/users/sizer/php/Smarty/);

4 require_once(SMARTY_DIR . Smarty.class.php);

5

6 $smarty = new Smarty;

7

8 $smarty->config_dir = SMARTY_DIR . configs;

9 $smarty->template_dir = SMARTY_DIR . templates;

10 $smarty->compile_dir = SMARTY_DIR . templates_c;

11 $smarty->cache_dir = SMARTY_DIR . cache;

12

13 $smarty->assign(Name,Sizer);

14 $smarty->display(index.tpl);

15

16 ?>

서로 다른 애플리케이션을 위한 Smarty 설정법

이제는 여러분들도 Smarty를 설치하고 설정하는 방법에 대해 어느 정도 감을 잡았으리라 생각되므로, 바로 실제 웹 애플리케이션에 맞는 설정 방법까지 알아보겠다. 만일 여러분이 Smarty를 이용한 게시판을 만들고 있다고 가정해 보자. <리스트 4>처럼 수동으로 해도 잘 동작하지만, 클래스의 가장 큰 장점 중 하나인 상속을 이용하면 좀더 쉽게 할 수 있는 방법이 있다. <리스트 5>의 Smarty_Board.class.php의 내용을 살펴보면, Smarty 클래스를 상속한 Smarty_Board 클래스가 생성자를 호출할 때 매개변수로 넘긴 테마의 종류에 따라 필요한 디렉토리의 설정을 한 번에 끝마치는 것을 알 수 있다. 그리고 실제 게시판의 초기화 루틴이 들어있는 board.php에서 테마를 선택하기 위해 GET으로 넘어온 'theme'를 검사하는 방식을 사용했는데, 이것은 관리자가 관리하기에 적절한 설정 파일을 맞출 수 있을 것이다.

물론 설정 시 필요한 디렉토리들은 지금까지 설명한 방법대로 만들면 되지만, 필자가 웹에서 구한 설정 스크립트를 약간 수정한 버전('이달의 디스켓'을 통해 제공)을 사용하면 다음과 같이 좀더 간단하게 할 수 있다. 이것은 물론 루트 상태에서 한 것이지만, 일반 사용자들도 사용할 수 있다. 강좌가 진행되는 동안 더욱 괜찮은 smarty-setup.sh를 만들어서 여러분들에게 제공하도록 하겠다.

◆ mkdir /var/www/template

◆ mkdir /var/www/template/Board

◆ mkdir /var/www/template/Board/default

◆ cd /var/www/template/Board/default

◆ /usr/sbin/smarty-setup.sh

<리스트 5> Smarty를 상속해서 환경을 설정하는 방법

Smarty_Board.class.php

1

2

3 if (false == defined(SMARTY_DIR)) {

4 define(SMARTY_DIR, /usr/share/php/Smarty/);

5 }

6

7 if (false == defined(BOARD_DIR)) {

8 define(BOARD_DIR, /var/www/template/Board/);

9 }

10

11 class require_once(SMARTY_DIR . Smarty.class.php);

12

13 Smarty_Board extends Smarty {

14

15 function Smarty_Board($theme) {

16 $this->Smarty();

17

18 $this->template_dir = BOARD_DIR . ${theme}/templates;

19 $this->compile_dir = BOARD_DIR . ${theme}/compiled_templates;

20 $this->config_dir = BOARD_DIR . ${theme}/configs;

21 }

22 }

23

24 ?>

borad.php

1

2

3 require_once(Smarty_Board.class.php);

4

5 if (false == isset($_GET[theme])) {

6 $theme = default;

7 }

8 else {

9 $theme = &$_GET[theme];

10 }

11

12 $smarty = new Smarty_Board($theme);

13

14 // .......

15

16 ?>

Smarty 소개를 마치며

이번 시간에는 Smarty에 간략하게 소개하고 설치와 설정하는 방법에 대해 알아봤다. 순수한 PHP 프로그래머를 지향하는 경우라면 결코 알고 싶지 않은 부분이기도 하지만, 여러분과 함께 일하는 디자이너와의 원활한 의사소통을 위해서, 혹은 보다 새로운 Smarty의 문법들을 만들어내기 위해서 Smarty의 템플릿 언어에 대해 알아둘 필요가 있다. 그럼 다음 시간에는 Smarty의 템플릿 문법 요소에는 어떤 것들이 있는지 소개하도록 하겠다. @