phpsource/템플릿2006. 9. 20. 09:28
written: Jan 28 2002
last modified: Sep 20 2006
템플릿 변수값 읽어오기
get_assigned(변수명)
이 함수는 해당 템플릿 변수에 지정되어 있는 변수값을 반환해 줍니다. 따라서 아래와 같은 경우를 보면 "잘되나 돌려봐야지" 라는 문자열을 반환해 주게 됩니다.
[code php;gutter:false] include_once('class.hTemplate.php'); $tpl = new hTemplate('./templates'); $tpl->define('table', 'table.htm'); $tpl->assign('BODY', '잘되나 돌려봐야지.'); $body = $tpl->get_assigned('BODY'); [/code]
FastTemplate에서는 assign() 함수에 의해 할당된 템플릿 변수와 parse 함수에 의해 할당된 템플릿 변수가 구분되어 있습니다. 그러나 후키템플릿에서는 아래 표에서 보는 바와 같이 템플릿 변수가 하나로 통일되어 있습니다.
< 템플릿 변수의 종류 및 저장 장소 >
종류 저장장소
FastTemplate 후키템플릿
assign() 함수에 의해 할당된 템플릿 변수 $PARSEVARS[변수명] 템플릿변수 리스트[변수명]
parse 함수에 의해 할당된 템플릿 변수 $변수명
< 템플릿 변수값 읽어오는 함수 >
종류 수행함수
FastTemplate 후키템플릿
assign() 함수에 의해 할당된 템플릿 변수값 읽어오기 get_assigned(변수명) get_assigned(변수명)
parse 함수에 의해 할당된 템플릿 변수값 읽어오기 fetch(변수명)
FastTemplate에서의 fetch 함수는 parse 함수의 실행 결과로 얻어진 템플릿 변수값을 반환하기 위해 작성되어 있었습니다. 후키템플릿에서는 템플릿 변수가 하나로 통일되었기 때문에 함수를 구분하여 작성할 필요가 없어졌고 따라서 템플릿 변수를 읽어오는 함수는 get_assigned() 함수로 통일되었습니다.
get_assigned() 함수를 이용하면 템플릿 변수값을 웹브라우저로 직접 출력하는 대신에 PHP 코드 내로 변수값을 넘겨 받을 수 있습니다. 그러면 넘겨 받은 값을 가지고 E-Mail로 전송하거나 파일로 저장하거나 할 수 있지요.
[code php;gutter:false] $data = $tpl->get_assigned('MAIN'); fwrite($fd, $data); // save to a file [/code]
템플릿 변수명을 지정하지 않았을 때 처리 방법
[code php;gutter:false] $tpl->assign('MAIN', array('table', 'main')); $data = $tpl->get_assigned(); [/code]
0.0.1 버전에서의 처리방법
템플릿 변수명을 지정하지 않으면 assign(변수명,...)에 의해 마지막으로 생성된 템플릿 변수를 기본으로 사용합니다. 그러나 assign() 함수의 두 번째 인수로 템플릿 또는 블록변수(다이나믹 블록)가 아닌 순수 문자열을 지정하였을 때는 변수명을 반드시 지정하여야 합니다.
0.0.2 버전에서의 처리방법
버전 0.0.2에서는 문자열일 때도 생략할 수 있습니다.
1.0.0 버전에서의 처리방법
버전 1.0.0부터는 템플릿 변수명을 명시적으로 지정하는 것을 원칙으로 하며 지정하지 않았을 때는 향후 업그레이드 버전에서 호환성을 보장할 수 없다.
1.2.0 버전에서의 처리방법
템플릿 변수명을 명시적으로 지정하여야 하며, 지정하지 않으면 정상적으로 동작하지 않습니다.
사용 예제
템플릿을 이메일로 보내기
후키템플릿은 템플릿 내용으로 HTML 문서로 제한하지 않습니다. 따라서 템플릿 분석 결과를 브라우저로 출력하는 대신 그 데이터를 변수로 되돌려 받아 이메일로 보낼 수 있습니다.
[code php;gutter:false] $data = $tpl->get_assigned(); mail('hwooky@phpclass.com', '후키템플릿', $data); [/code]
템플릿을 파일로 저장하기
템플릿 분석 결과를 아래와 같이 별도의 파일로 저장할 수 있습니다.
[code php;gutter:false] $data = $tpl->get_assigned(); if ($fp=@fopen('parsed.html', 'w')) { fwrite($fp, $data); fclose($fp); } [/code]
템플릿을 다른 템플릿 변수에 할당하기
템플릿 분석 결과를 아래와 같이 또 다른 템플릿 변수에 할당하게 되면 다음 템플릿을 분석할 때 이용할 수 있을 것입니다.
[code php;gutter:false] $data = $tpl->get_assigned(); $tpl->assign('NEXTMAIN', $data); [/code]
get_assigned()로 획득한 값을 출력할 때 주의할 점
1.2.0 버전부터 FastPrint() 함수대신에 사용되는 output() 함수에서 출력된 템플릿 스크립트가 php 에서 제공하던 출력버퍼 대신에 후키템플릿 자체 버퍼를 이용하며, 자체 버퍼에 저장된 템플릿 스크립트는 shutdown 함수가 실행될 때 브라우저로 전송됩니다. 따라서 print 또는 echo 함수를 이용하여 출력된 스크립트들은 자체 버퍼에 저장된 템플릿 스크립트보다 먼저(php5) 또는 나중(php4)에 출력됩니다.
따라서 get_assigned() 함수로 획득한 템플릿 스크립트를 순서대로 브라우저로 전송하려면 print 또는 echo 함수를 이용하면 안되며 새로 추가된 output()함수를 이용하시기 바랍니다.
[code php;gutter:false] $tpl->output($tpl->get_assigned('VARNAME')); [/code]

Posted by 방글24