written: Jan 28 2002
last modified: Sep 20 2006
last modified: Sep 20 2006
템플릿 변수 디버깅
개발과정에서 현재까지 할당된 템플릿 변수의 상태를 실시간으로 확인할 수 있는 디버깅 기능을 1.0.0 버전에 새로이 추가하였습니다.
모든 템플릿 변수 정보를 출력할 때
현재까지 템플릿 변수에 할당된 값을 보여주기 위하여 아래와 같이 output() 함수(1.2.0 이전 버전에서는 FastPrint() 함수)에 배열 인수로 "-variable" 지정합니다.
[code php;gutter:false]
output(
array(
'-variable'
)
);[/code]
그러면 이 문장이 나타난 행까지 할당된 모든 템플릿 변수의 상태를 아래와 같이 웹 브라우저에 출력해 줍니다.
첫 행에 나타난 BODY, BROWSER_VERSION, COUNTER 등은 템플릿 변수명을 나타내며, 두 번째 행은 할당된 변수값을 보여줍니다. 마지막 행은 해당 템플릿 변수가 선언된 템플릿 파일명을 의미합니다. 템플릿 파일에는 없으나 PHP 소스에서 assign() 메소드를 통해 할당되었거나 템플릿 파일을 컴파일하는 과정에서 내부적으로 추가 생성된 템플릿 변수는 파일명 대신에 "assigned variable"라는 예약어가 출력됩니다.
두 번째 행에 보여주는 변수값은 모두 보여주지는 않고 앞뒤로 50자씩만 보여주며 중간에는 생략된 문자수를 보여줍니다. 위의 예에서 템플릿 변수 BODY의 할당된 값을 보면 중간에 생략된 문자수가 12,176자(영문자 기준)임을 알 수 있습니다.
일부 템플릿 변수 정보만 출력할 때
만약 모든 템플릿 변수가 아닌 일부 템플릿 변수에 대하여만 보고싶다면 아래와 같이 보고싶은 템플릿 변수만을 명시적으로 지정하면 됩니다.
[code php;gutter:false]
output(
array(
'-variable COUNTER MAIN HEAD_TITLE'
)
);[/code]
그러면 이 문장이 나타난 행까지 할당된 템플릿 변수 COUNTER, MAIN, HEAD_TITLE의 상태를 아래와 같이 웹 브라우저에 출력해 줍니다.
조건변수(스위치문)일 때
조건변수(스위치문)는 일반 템플릿 변수와는 좀 다른 방법으로 처리되고 있습니다.
{SW_VAR::3,첫번째값|두번째값|세번째값} <<<--- 1.1.1 버전까지
{?SW_VAR;;3}첫번째값|두번째값|세번째값{/} <<<--- 1.2.0 버전
{?SW_VAR;;3}첫번째값|두번째값|세번째값{/} <<<--- 1.2.0 버전
예를 들어 템플릿 ./templates/main.htm의 내용이 위와 같은 경우를 생각해 보겠습니다. 위와 같이 switch문 형식의 템플릿 변수가 포함된 템플릿 파일을 아래의 PHP 소스를 이용하여 컴파일해 보지요.
[code php;gutter:false]
$tpl->define('main', 'main.htm');
$tpl->assign('SW_VAR', 1);
$tpl->assign('MAIN', 'main');
$tpl->output(
array(
'MAIN',
'-variable SW_VAR'
)
);[/code]
위와 같이 output() 함수를 이용하여 템플릿 변수 "SW_VAR"에 대한 할당 상태를 확인하게 되면 아래와 같은 정보를 얻을 수 있습니다.
위의 정보를 분석해 보면 우선 템플릿 파일의 {SW_VAR;;3}첫번째값|두번째값|세번째값{/} 부분은 {*switch_0}로 대치됩니다. 컴파일 과정에서 추가로 생성된 템플릿 변수 {*switch_0}는 상황(case 1, 2, 3)에 따라 세가지 값(첫번째값, 두번째값, 세번째값)을 가질 수 있습니다. 최종적으로 템플릿 변수 {*switch_0}에 세가지 값 중에 어떤 값이 할당되느냐는 템플릿 변수 {SW_VAR} 값이 무엇이냐에 달려있지요. 위의 경우에는 템플릿 변수 {SW_VAR} 값이 초기값은 3이었지만 PHP 소스에서 $tpl->assign("SW_VAR", 1)을 통해 그 값이 재할당되어 1이 되었으므로 {*switch_0}의 값은 "첫번째값"이 됩니다. 결국 {*switch_0}의 값 "첫번째값"이 출력되는 것이지요.
위에서 보면 템플릿 변수 {SW_VAR} 값이 1이라고 나타났으나 만약 PHP 소스에서 $tpl->assign("SW_VAR", 1); 문장을 수행하기 전에 tpl->output(array("-variable SW_VAR")); 라는 문장을 수행하였다면 템플릿 파일에 선언된 초기값 3이 나타났을 것입니다.
'phpsource > 템플릿' 카테고리의 다른 글
{후키템플릿}2.4.템플릿 캐시 정보 (0) | 2006.09.20 |
---|---|
{후키템플릿}2.3.템플릿 구조 정보 (0) | 2006.09.20 |
{후키템플릿}4.4.필터 환경 설정 (0) | 2006.09.15 |
{후키템플릿}8.2.필터 명령 (0) | 2006.08.02 |
{후키템플릿}3.7.output() (0) | 2006.08.01 |