written: Oct 16 2006
[버전1.2.0 제안서] 여기서 기술한 내용은 확정된 용법이 아니라 다음 버전을 발표할 때까지 여러분의 의견 수렴을 통해 더 검토되어야 하는 제안서(proposal)로 문법적인 내용이 다소 변경될 수 있음을 미리 밝혀둡니다.
다음 버전부터는 필터 기능을 지원하지 않습니다. 필터기능은 다른 방법으로 단순화시켜 제공할 생각입니다.
다음 버전부터는 필터 기능을 지원하지 않습니다. 필터기능은 다른 방법으로 단순화시켜 제공할 생각입니다.
초기값 지정 형식의 확장
1.2.0 버전부터는 아래와 같이 초기값으로 상수가 아닌 여러가지 형식의 PHP문을 사용할 수 있습니다.
{변수명;;=$a+1}
{?변수명;;=$a+1}사과|배|오렌지{/}
{?변수명;;=$a+1}사과|배|오렌지{/}
이와같이 PHP문으로 지정된 초기값은 템플릿 변수가 포함된 템플릿을 assign() 함수로 처리할 때 또는 처리한 직 후에 평가되여 그 결과값이 템플릿 변수에 저장되어 처리됩니다.
PHP문으로 초기값을 지정하기 위해서는 초기값의 첫문자를 '='로 지정합니다. 이전 버전과 마찬가지로 초기값에는 '{', '}', ',' 문자를 포함시킬 수 없으며 이를 포함시키기 위해서는 '\' 문자로 이스케이프시켜야 합니다.
초기값으로 지정된 PHP문은 PHP 내장함수인 eval()을 이용하여 처리하기 때문에 PHP문의 문법상의 이상유무, 발생하는 에러처리 및 반환 결과에 대하여는 eval() 함수의 처리결과에 따릅니다. 따라서 PHP문 형식이 문법상 정확하게 작성되지 않으면 eval() 함수에 의해 에러를 발생시킵니다.
초기값으로 지정된 PHP문의 평가
단순문, 스위치문에서의 PHP문에 대한 평가는 해당 템플릿변수가 포함된 템플릿을 assign() 함수로 처리할 때 이루어집니다.
초기값으로 지정된 전역변수
[code html;gutter:false]
<!-- NAME: main.htm -->
<HTML>
<BODY>
{TEXT;;="[".$gText."]"}
</BODY>
</HTML>
[/code]
main.htm이라는 템플릿 파일을 이용하여 HTML 스크립트를 생성하기 위한 PHP 문서는 아래와 같습니다.
[code php;gutter:false]
<?php
/**
* filename : test.php
*/
include_once('class.hTemplate.php');
$tpl = new hTemplate('./templates');
$tpl->define('main', 'main.htm');
$gText = '전역변수에 할당된 값';
$tpl->assign('MAIN', 'main');
$tpl->output('MAIN');
?>
[/code]
test.php 문서에 의해 main.htm로부터 생성된 HTML 스크립트를 보면 아래와 같습니다.
[code html;gutter:false]
<HTML>
<BODY>
[전역변수에 할당된 값]
</BODY>
</HTML>
[/code]
템플릿변수 TEXT는 이 변수가 포함된 템플릿 main을 test.php의 $tpl->assign('MAIN', 'main'); 문장에 의해 처리될 때 PHP문 "[".$gText."]"에 대한 평가가 이루어집니다. 따라서 초기값으로 지정된 전역변수의 값은 PHP 코드를 평가하기 전에 미리 할당되어 있어야 합니다.
초기값으로 지정된 전역함수
PHP 문에 함수를 포함하려면 아래와 같이 지정합니다. 지정 형식은 PHP에 내장된 eval() 함수로 실행하는데 필요한 정확한 문장형식을 갖추어야 합니다. 만약 포함된 함수가 사용자 정의함수인 경우에는 PHP 코드를 평가하기 전에 해당함수가 존재하여야 합니다.
{ROW;;=func(arg1,arg2,arg3)}
예를 들어 설명하겠습니다.
[code html;gutter:false]
<!-- NAME: main.htm -->
<HTML>
<BODY>
{TEXT;;=userfunc('[',$gText,']'}
</BODY>
</HTML>
[/code]
main.htm이라는 템플릿 파일을 이용하여 HTML 스크립트를 생성하기 위한 PHP 문서는 아래와 같습니다.
[code php;gutter:false]
<?php
/**
* filename : test.php
*/
function userfunc($arg1, $arg2, $arg3) {
return $arg1 . $arg2 . $arg3;
}
include_once('class.hTemplate.php');
$tpl = new hTemplate('./templates');
$tpl->define('main', 'main.htm');
$gText = '전역변수에 할당된 값';
$tpl->assign('MAIN', 'main');
$tpl->output('MAIN');
?>
[/code]
test.php 문서에 의해 main.htm로부터 생성된 HTML 스크립트를 보면 아래와 같습니다.
[code html;gutter:false]
<HTML>
<BODY>
[전역변수에 할당된 값]
</BODY>
</HTML>
[/code]
초기값으로 지정된 템플릿변수
{TEXT;;=[{tText}]}
예를 들어 설명하겠습니다.
[code html;gutter:false]
<!-- NAME: main.htm -->
<HTML>
<BODY>
{TEXT;;=[{tText}]}
</BODY>
</HTML>
[/code]
main.htm이라는 템플릿 파일을 이용하여 HTML 스크립트를 작성하기 위한 PHP 문서는 아래와 같습니다.
[code php;gutter:false]
<?php
/**
* filename : test.php
*/
include_once('class.hTemplate.php');
$tpl = new hTemplate('./templates');
$tpl->define('main', 'main.htm');
$tpl->assign('tText', '템플릿변수에 할당된 값');
$tpl->assign('MAIN', 'main');
$tpl->output('MAIN');
?>
[/code]
test.php 문서에 의해 main.htm로부터 생성된 HTML 스크립트를 보면 아래와 같습니다.
[code html;gutter:false]
<HTML>
<BODY>
[템플릿변수에 할당된 값]
</BODY>
</HTML>
[/code]
'phpsource > 템플릿' 카테고리의 다른 글
{후키템플릿}0.2.업그레이드 정보 (0) | 2006.10.21 |
---|---|
{후키템플릿}8.5.전처리 명령 (0) | 2006.10.16 |
{후키템플릿}7.2.내용 형식 (0) | 2006.10.16 |
{후키템플릿}8.7.내장 필터함수 (0) | 2006.10.13 |
{후키템플릿}7.9.TR 용법 (0) | 2006.10.13 |