phpsource/템플릿2006. 8. 1. 09:31
written: Sep 20 2006
템플릿 변수값을 출력버퍼에 저장하기
output(변수명)
이 함수는 템플릿 변수에 저장되어 있는 HTML 스크립트를 템플릿출력버퍼에 저장하는 기능을 담당합니다.
[code php;gutter:false] $tpl->assign('MAIN', 'main'); $tpl->output('MAIN'); [/code]
위와 같은 경우에 output() 함수는 템플릿 변수 MAIN의 값을 출력버퍼에 저장합니다. 출력버퍼에 저장된 HTML 스크립트는 register_shutdown_function() 함수로 지정된 콜백함수가 실행될 때 브라우저로 전송됩니다.
HTML 스크립트를 출력버퍼에 저장하기
output(HTML스크립트)
output() 함수에 HTML 스크립트를 직접 지정하여 출력버퍼에 그 값을 저장할 수 있습니다.
[code php;gutter:false] $tpl->output('<p>HTML스크립트</p>'); [/code]
위와 같이 output() 함수를 이용하여 HTML 스크립트를 직접 출력버퍼에 저장할 수 있습니다. 단, 기존에 디버깅을 위해 사용되던 예약어인 '-variable', '-template', '-cache'와 블록변수명으로 사용된 단어들은 지정할 수 없습니다.
output() 함수에서 지정된 HTML 스크립트는 후키템플릿의 자체 출력버퍼(템플릿출력버퍼)를 이용하며, 템플릿출력버퍼에 저장된 HTML 스크립트는 프로그램이 종료될 때 브라우저로 전송됩니다. 또한 템플릿 객체 생성후에 print 또는 echo 함수를 이용하여 출력된 HTML 스크립트들도 모두 자체 출력버퍼에 저장된 후 HTML 스크립트보다 나중에 브라우저로 전송됩니다.
따라서 get_assigned() 함수에서 획득한 HTML 스크립트를 순서대로 브라우저로 전송하려면 print 또는 echo 함수를 이용하면 안되며, 반드시 output()함수를 이용하시기 바랍니다.
[code php;gutter:false] $tpl->output($tpl->get_assigned('MAIN')); [/code]
output() 함수를 이용한 디버깅
아래와 같이 output() 함수의 배열인수를 통해 "-variable", "-template", "-cache"를 지정하면 템플릿 변수 정보, 템플릿 구조 정보, 템플릿 캐시 정보를 얻을 수 있습니다. 수집된 정보들은 HTML 스크립트와 마찬가지로 출력버퍼에 저장되며, 프로그램이 종료된 후 브라우저로 전송합니다.
[code php;gutter:false] $tpl->output( array( '-variable', '-template', '-cache' ) ); [/code]
-variable
현재까지 할당되어 있는 템플릿변수에 대한 정보를 수집합니다.
-template
현재까지 템플릿파일로부터 읽고 파싱된 템플릿 구조에 대한 정보를 수집합니다.
-cache
1.2.0 버전부터 제공되며, 캐시관련 정보를 수집합니다.
만약 디버깅 정보 전부가 아닌 일부 템플릿 변수(또는 템플릿 구조 정보, 캐시 관련 정보)에 대하여만 보고 싶다면 아래와 같이 보고싶은 정보 항목을 명시적으로 지정하면 됩니다.
[code php;gutter:false] $tpl->output( array( '-variable PAGEVIEWS HEAD_TITLE COUNTER', '-template MAIN', '-cache DOCUMENT' ) ); [/code]
이 기능에 대한 좀 더 자세한 정보는 "2.2.템플릿 변수 정보", "2.3.템플릿 구조 정보", "2.4.템플릿 캐시 정보"를 참조바랍니다.
헤더태그 내용의 출력 순서
헤더 이전 및 헤더에 포함된 태그의 출력순서는 아래와 같습니다.
[code html;gutter:false] <!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <meta name="Generator">와 같은 메타 태그 기타 헤더 태그 </head> <body .....> [/code]
기타 헤더 태그 내용의 출력순서는 output() 함수로 처리한 순서대로 출력버퍼에 저장되며, 동일한 태그가 중복되어 나타나는 경우에는 첫번째 처리한 태그가 출력됩니다.
INCLUDE 파일이나 get_assigned() 함수로 획득한 템플릿 스크립트(서브 템플릿 스크립트)에 포함된 헤더태그 내용은 이를 포함하고 있는 메인 템플릿 파일(메인 템플릿 스크립트)에 포함된 헤더태그 내용 뒤에 추가됩니다. 한 파일 내에 포함된 서브 템플릿 스크립트가 여러 개 있을 때는 위쪽에 있는 서브 템플릿 스크립트부터 출력버퍼에 저장됩니다. 헤더태그 내와 바디태그 내 모두에 서브 템플릿 스크립트가 있을 때는 헤더태그 내에 있는 서브 템플릿 스크립트부터 출력버퍼에 저장됩니다.

Posted by 방글24