hTemplate – 0.2.업그레이드 정보

1.2.0 (2006.10.21)

hTemplate-1.2.0

  • assign() 함수에서 두번째 인자로 지정하여 사용하던 dot 문자에 의한 append 기능을 삭제합니다.
  • 필터기능을 추가하였고, 이러한 필터기능은 미리 정의된 9가지의 실행시간(initialize, premacro, precompile, compile, postcompile, preassign, assign, postassign, output)을 사용자가 선택할 수 있도록 하였으며 지정된 실행시간에 따라 필터기능이 수행됩니다. 또한 템플릿문서에서 사용할 수 있는 허용필터명령을 지정할 수 있도록 하였습니다.
  • 래핑(wrapping)기능이 추가되었습니다. 래핑기능을 이용하면 기존에 작성된 템플릿 문서와 php 문서를 수정하지 않고도 이 문서의 기능을 임의로 수정할 수 있습니다.
  • 템플릿 변수의 구문형식이 수정, 보완되었습니다.
  • 템플릿변수의 내용형식이 기존의 template 문서 뿐만 아니라 일반 텍스트 문서(text document)와 php 스크립트(php script)까지 지정할 수 있도록 하였습니다.
  • 다이나믹블록(블록변수)의 자동할당기능이 추가되었습니다.
  • 자체출력버퍼를 이용하는 출력함수인 output()가 추가되었으며, 이 함수는 기존의 FastPrint() 함수가 가지고 있던 모든 기능을 포함하고 있습니다. 더불어 output() 함수를 이용하면 1.2.0 버전부터 출력관련 기능인 캐시정보보기, output 필터실행시간 처리하기 등의 기능을 수행할 수 있습니다.
  • PHP 4.2.0 버전에서 touch() 함수와 관련하여 “warning error”가 발생하던 버그를 수정하였습니다.
  • win32 플랫폼의 php 4.1.0 버전에서 is_file() 함수의 인자로 지정된 파일이 없을 때 warning 에러가 발생하는 버그를 수정하였습니다.
  • TR 용법을 PROPOSAL(제안서)로 추가하였습니다.
  • 웹서버 루트에서 절대경로 계산시 도메인명 아래에 슬래시가 두개 출력되던 버그를 수정하였습니다.
  • 자바스크립트 문장 내에 있는 인용문에서 인용부호를 이스케이프하였을 때 HTML 문서를 정상적으로 파싱하지 못하고 깨지는 버그를 수정하였습니다.
  • 배열값에 의하여 다이나믹블록(블록변수)의 내용을 자동으로 채우는 기능을 PROPOSAL(제안서)로 추가하였습니다.
  • 동일한 SCRIPT 파일이 중복되었을 때 동일한 파일임에도 불구하고 중복되어 출력되는 버그를 수정하였습니다.
  • 출력문서의 HTML 태그 대문자|소문자를 선택하는 기능이 추가되었습니다.
  • 일부 자바스크립트 문장 압축할 때 발생하던 버그를 수정하였습니다.
  • 캐시파일에 퍼미션을 지정할 수 있도록 하였습니다.
  • 캐시파일을 압축하여 저장할 수 있는 기능을 추가하였습니다.
  • no-file 용법을 PROPOSAL(제안서) 수준에서 정식 기능으로 포함시켰습니다.

1.1.1p3 (2005.4.1)

hTemplate-1.1.1p3

  • COMMAND 태그 관련 버그를 잡았습니다.
  • 템플릿 파일에 기록된 주소가 도메인에 대한 정보없이 단지 “http://”만이 포함되어있을 때 발생하던 에러를 정상처리하도록 하였습니다.
  • allow_call_time_pass_reference의 값이 Off일 때 발생하던 “Warning: Call-time pass-by-reference ……” 에러가 발생하지 않도록 수정하였습니다.

1.1.1-dev (2005.2.13)

hTemplate-1.1.1-dev

  • 1.1.1 버전부터는 GPL 라이선스 대신에 LGPL 라이선스를 따릅니다.
  • class.hHtmlUrlRedirection.php을 삭제하고 대신에 class.hHtmlUrlParser.php 파일이 포함되었습니다.
  • class.hFastTemplate.php이 삭제되었으며 따라서 향후에는 기존의 FastTemplate 문서를 지원하지 않습니다.
  • php 4.3.10 이상 버전에서 캐시파일이 생성되지 않는 문제가 계속발생하여 func.version_compare.php를 추가하여 개선했습니다.

1.1.0 (2005.1.14)

htemplate-1.1.0

업그레이드 및 패치(upgrade and patch)

  • class.hHtmlClassify.php에서 자바스크립트 파일 처리 방법을 변경하였습니다.
  • URL 자동변경 기능에서 리소스의 경로를 상대경로 대신에 절대경로로 변경할 수 있도록 하였습니다.
  • html 헤더의 출력유무를 설정할 수 있도록 하였습니다.
  • 새로운 멤버템플릿변수 {::_PATH_TO_TPLS}를 추가하였으며 이를 이용하여 리소스 리디렉션 처리에 좀 더 유연하게 할 수 있도록 하였습니다.
  • <?XML version=”1.0″?> 태그를 처리할 수 있도록 하였습니다.
  • 현재 페이지에 대한 캐시 갱신방법을 개선하였습니다.
  • 생성자의 HTML 파서 정보에 두가지 정보를 추가로 설정할 수 있도록 하였습니다.
  • 스타일시트에서의 URL 리디렉션 처리를 개선하였습니다.
  • 템플릿 파일이 비어있는 경우에 발생하는 에러를 없앴습니다.
  • php 4.3.10 이상 버전에서 HW_PHPVERSION 상수 문제로 인해 캐시파일이 생성되지 않는 문제를 수정하였습니다.
  • 이전 버전에서는 member 디렉토리에 있던 class.hClassMember.php 파일을 1.1.0 버전부터 class 디렉토리로 옮겼습니다.
  • 템플릿 변수 구분자(template variable’s delimiters)를 상황에 따라 적절히 사용할 수 있도록 “{변수명}” 외에 “<!–{변수명}–>”와 같이 나타낼 수 있도록 하였습니다.
  • 다이나믹 블록의 시작과 끝을 나타내는 구분자를 “<!– BEGIN DYNAMIC BLOCK: name –>”, “<!– END DYNAMIC BLOCK: name –>” 대신에  “{@name}”, “{/name}”로도 나타낼 수 있습니다.
  • 동일한 이름의 블록을 중복으로 나타낼 수 있습니다. 단 나중에 컴파일된 블록 내용으로 처리됩니다.
  • 템플릿파일에서 다른 템플릿 파일을 인클루드할 수 있는 기능(“하위템플릿 인클루드”)을 추가하였습니다. 자세한 것은 “하위템플릿 인클루드” 메뉴를 참조하세요.
  • get_assigned() 함수에서 지정한 변수명이 존재하지 않는 경우, 이전 버전은 에러를 발생시켰으나 false를 반환하도록 수정하였습니다. 반면에 FastPrint() 함수의 경우는 이전과 같이 지정한 변수명이 존재하지 않는다면 에러를 발생시킵니다.
  • 웹문서 리디렉션에서 다른 쿼리문이 있을 때 정상적으로 처리하지 못하는 문제를 수정

아래와 같은 템플릿 파일의 경우와 같이 링크된 문서에 쿼리문이 붙었을 때 웹문서 리디렉션 기능이 동작한다면

이전에는 아래와 같이 웹리디렉션용 쿼리문인 “template=템플릿파일명”이 다른 쿼리문과 구분되지 않았습니다.

이 문제를 수정하여 아래와 같이 다른 쿼리문과 구분되도록 하였습니다.

  • 템플릿 변수가 복수개로 정의되어 있거나 여러번 할당하는 경우, 변수의 형식에 관계없이 마지막 값만이 유효합니다.
  • hHtmlUrlRedirection 클래스에서 정의된 private 함수인 _get_script_info(), _get_file_info(), _relative_path() 메소드를 별도의 클래스 hGlobals(파일명 class.hGlobals.php)로 분리시켰습니다. 아울러 _get_file_info() 메소드에 약간의 문제가 있어 수정하였습니다.
  • 템플릿 변수 디버깅할 때 나타나는 “template file” 정보를 개선하였습니다.
  • hTemplateStructure 및 hTemplateDebug 클래스에서 정적변수 처리로 인한 오버헤드를 줄이기 위해 hTemplateStructure 및 hTemplateDebug 클래스 구조를 Singleton 패턴으로 수정하였습니다. 이에 따라 Singleton 패턴을 처리하는 클래스인 class.hSingleton.php가 추가되었습니다.
  • <BASE> 태그에서 “href” 속성없이 “target” 속성만 있을 때 <BASE> 태그가 사라지는 버그를 수정하였습니다.(지용호님 지적 내용)
  • 1.0.0 버전에서 Proposal(제안서)로 소개되었던 웹문서 리디렉션 기능에서 확장자가 “html”인 웹문서를 상대경로로 지정하게 되면 무조건 이 기능이 수행되었습니다. 그런데 이 기능 때문에 기존에 사용하던 HTML 문서 중에 확장자가 “html”이었던 문서와 충돌이 되어 후키템플릿이 정상적으로 동작되지 않는 경우가 있었습니다. 따라서 이 기능을 기본적으로 동작되지 않도록 수정하였습니다. 만약 이 기능을 사용하기를 원한다면 “웹문서 리디렉션”에 대한 설명서를 참조하여 해당 파일 내용을 수정하시기 바랍니다.
  • parse_url() 함수가 PHP 버전에 따라 반환값이 다르게 나타나는 관계로 hHtmlUrlRedirection 클래스에서 정의된 private 함수인 _url_redirection() 메소드에 문제가 있어 웹문서 리디렉션 기능이 정상적으로 동작하지 않을 때가 있어 수정합니다.
  • assign() 함수에서 “.” 문자에 의한 append 지원방식을 삭제하였습니다.
  • class.hHtmlClassify.php 파일에서 아래와 같이 </HEAD> 바로 뒤에 나타나는 일반문자열(태그없이 나타나는 문자열)이 사라지는 버그를 수정합니다.

이전 버전에서는 아래와 같은 예를 class.hHtmlClassify.php으로 분류하게 되면 “태그 바깥쪽의 문자열” 부분이 없어지는 버그가 있었습니다. 이를 정상적으로 나타나도록 수정하였습니다.

1.0.0 (2003.4.30)

hTemplate-1.0.0

업그레이드(upgrade)

  • 객체 생성을 여러번 하는데 따른 문제점 개선 – 객체 생성 및 소멸
  • 템플릿 정보의 캐시 저장을 소멸자에서 실행하도록 수정 – 객체 생성 및 소멸
  • 복수 템플릿 파일에 존재하는 공통 부분(<HEAD> ~ </HEAD> 및 <BODY attrib>)을 클래스 hTemplate의 생성자에서 설정한 ‘사용자 정의 출력버퍼 콜백함수’를 수행할 때 단 한번만 출력하도록 하였습니다. – 복수 템플릿파일의 용법
  • 템플릿 변수 선언과 할당에 대한 상태를 파악할 수 있는 디버깅 기능 추가 – 템플릿 변수 정보
  • 템플릿 파일 정보를 확인할 수 있는 디버깅 기능 추가 – 템플릿 파일 정보
  • 멤버 템플릿 변수 지원 – 멤버 템플릿 변수
  • assign() 함수의 append 기능 개선 – assign()
  • switch문의 각 case 값 출력 문제 개선 – switch문
  • 중첩 switch문 지원 – switch문
  • <SCRIPT> 태그 파싱 개선
  • <PARAM> 태그 파싱 개선 – 리소스 리디렉션
  • FastTemplate용 문서 사용을 위한 hFastTemplate 클래스 제공 – FastTemplate 호환
  • 템플릿 파일 기본 디렉토리의 다중화 지원 – 객체 생성 및 소멸
  • HTML 파서 기능을 사용자가 선택 – 객체 생성 및 소멸
  • URL 리디렉션 기능을 사용자가 선택 – 객체 생성 및 소멸
  • HTML 문서 압축 기능을 사용자가 선택 – 객체 생성 및 소멸
  • 다중 템플릿 파일의 특수용법에서 공통 부분 처리 버그 수정
  • 캐시 접근을 위한 코드들이 캐시핸들러 1.0.0 버전에 맞게 수정되었습니다. – 캐시핸들러
  • 캐시를 이용할 때 $_POST[], $_GET[], $_SERVER[] 등 미리정의된 수퍼글로벌변수를 정상적으로 생성하지 못하는 문제 해결
  • 복수의 템플릿 파일로 구성된 문서에서 일부 템플릿만 갱신되는 경우에 출력이 정상적으로 이루어지지 않는 버그 수정
  • 캐시 파일명은 $PHP_SELF에 해당하는 문자열과 캐시 id의 조합으로 생성되며, 이전 버전의 조합방법이 다소 변경되었습니다. 따라서 캐시파일은 이전 버전과 호환성이 없습니다.
  • 캐시 id를 지정하지 않으면 $PHP_SELF에 해당하는 문자열만 가지고 캐시 파일이 생성됩니다. 이전 버전에서는 캐시 핸들러의 캐시 id 기본값으로 생성되었습니다.
  • 한 문서에서는 garbage collection을 디렉토리별로 한번만 수행
  • 캐시파일의 내용을 URL을 통해 불법적으로 접근하는 경우에 그 내용이 웹브라우저에 나타나지 않도록 개선
  • 자바스크립트 이벤트 핸들러에 의해 실행되는 자바스크립트 함수로 전달되는 URL 리디렉션 기능 추가 – URL 리디렉션
  • 1.0.0 베타버전에서의 class.hHtmlReboundUrl.php 파일명이 class.hHtmlUrlRedirection.php로 변경되었으며, 이 파일에 정의되어있는 클래스 hHtmlReboundUrl은 hHtmlUrlRedirection으로 변경되었습니다.
  • 생성자에 전달하는 HTML 파서 관련 설정값 중에 active_rebound_url을 active_url_redirection으로 변경하였습니다.
  • 클래스 HtmlUrlRedirection에 정의된 rebound_url 관련 함수명을 url_redirection 으로 변경하였습니다.

제안서(proposal)

  • no-file 용법 제안 – no-file 용법
  • 하이퍼링크로 연결된 웹문서의 리디렉션 – 웹문서 리디렉션

0.0.4 (2003.1.15)

hTemplate-0.0.4

  • 에러 발생 수준을 E_ALL로 설정한 후 발생하는 warning error을 전반적으로 수정하였습니다.
  • 에러 핸들링을 trigger_error() 함수를 이용하였습니다.
  • 현재 zend.com에서 개발 중인 Zend 엔진 2.0과의 소스 호환성을 위하여 객체 생성할 때 참조 연산자 “&”를 사용하지 않았습니다.
  • 웹서버의 플랫폼이 윈도우 기반인지를 판별하는 방법을 $this->iswin = (“WIN” == strtoupper(substr(PHP_OS, 0, 3))) ? true : false; 으로 변경하였습니다.
  • 템플릿 파일에서 사용가능한 특수문자로 콤마(,)가 추가되었습니다. 콤마는 switch문에서 사용하는 특수문자로 콤마 앞에다 역슬래시(\)를 붙여주면 되면 콤마를 출력할 수 있습니다. 템플릿 변수의 초기값을 나타내는 문자열에 콤마를 나타낼 때 이 방법을 이용하면 됩니다.
  • 템플릿 파일에서 사용가능한 특수문자로 콤마(,)가 추가되었습니다. 콤마는 switch문에서 사용하는 특수문자로 콤마 앞에다 역슬래시(\)를 붙여주면 되면 콤마를 출력할 수 있습니다. 템플릿 변수의 초기값을 나타내는 문자열에 콤마를 나타낼 때 이 방법을 이용하면 됩니다.
  • (버그)class.hTemplate.php의 assign_var() 메소드 수정 – 후키템플릿의 switch문(조건문) 설명을 보면 true일 때는 나열된 값의 마지막 값으로 출력하고 false일 때는 그 전값(끝에서 두번째값)으로 처리하도록 되어 있습니다. 그런데 문자열 인덱스인 경우를 제대로 처리하지 못하는 벌레가 있어 수정합니다. 수정하게 되면 설명서에 있는대로 키값에 관계없이 마지막 값과 그 전값을 출력합니다.
  • (버그)class.hTemplate.php의 merge_var() 메소드 수정 – 이 함수는 템플릿 변수를 등록하면서 초기화하는 함수로 이미 템플릿 변수가 등록되어 있는 경우는 새로이 등록하지 않고 넘어간다.
  • (버그)class.hTemplate.php의 $_POST[], $_GET[], $_SERVER[] 등에 해당하는 템플릿 변수 생성문제 – 예를 들어 $_POST[“mode”], $_GET[“table”], $_SERVER[“PHP_SELF”]에 해당되는 템플리 변수 {_POST.mode}, {_GET.table}, {_SERVER.PHP_SELF}가 정상적으로 생성되지 못하네요.
  • (개선)class.hTemplateParser.php의 is_template_name() 메소드 수정
  • (버그)class.hTemplateParser.php의 relative_path() 메소드, rebound_url() 메소드 수정
  • (버그)class.hHtmlParser.php의 is_tag() 메소드 수정 – <tr >와 같이 속성없이 스페이스만 있는 경우에 정상적으로 해석하지 못하고 태그가 깨집니다.
  • class.hHtmlParser.php의 스택 자료구조를 위한 클래스를 별도의 클래스로 분리
  • class.hHtmlParser.php의 str_space_null($attrib) 메소드를 정규표현식으로 대체
  • (개선)class.hCache.php의 garbage collection 핸들러를 private 함수로 변경 – 이전 버전에서는 보통 객체 생성한 후에 garbage collection 핸들러를 명시적으로 실행하여야 하였으나 이를 open 함수 내에서 동작하도록 수정하였습니다. 한 문서에서는 객체 생성을 몇 번을 하던지 관계없이 단 한번만 garbage collection을 하도록 하였습니다.

0.0.3 (2002.9.20)

hTemplate-0.0.3

0.0.3으로 판올림되면서 경로문제로 현재 저장되어 있는 캐시 파일들이 모두 갱신되어야 합니다. 판올림하면서 템플릿 파일이 수정된다면 관계없으니 그렇지 않다면 판올림하기 전에 캐시 파일들을 모두 지워주시기 바랍니다.

  • 템플릿 파일에서 특수문자({, }, |)의 표시 기능을 개선함 – 특수문자({, }, |)를 템플릿 파일에 삽입하기 위해서는 어느 곳이든지 상관없이 앞에다 역슬래시(\)를 붙여주면 됩니다. 이전 버전에서는 그 위치에 많은 제한을 받고 있습니다.
  • switch문에서만 가능했던 반복문을 일반문까지 반복할 수 있도록 확대 적용
  • 템플릿 변수에 초기값(default) 설정
  • 템플릿에 지정된 경로가 현 스크립트 문서의 하위디렉토리에 있는 경우에는 현 스크립트 문서의 경로를 기준으로 상대 경로로 자동 변환

0.0.2-패치1 (2002.7.27)

hTemplate-0.0.2p1

후키 템플릿(class.hTemplate.php) 수정

  • (버그)행번호 137번 assign_str() 함수 수정 및 멤버변수 $ARRAYKEY 추가

후키 템플릿 파서(class.hTemplateParser.php) 수정

  • (버그)행번호 359번 attrib_to_string() 함수 수정
  • (버그)행번호 546번 process_head() 함수 수정
  • (버그)행번호 652번 head_parse_into_struct() 함수 수정
  • (개선)행번호 131번 set_case_var() 함수 수정

후키 HTML 파서(class.hHtmlParser.php) 수정

  • (버그)행번호 276번 attrib_to_array() 함수 수정
  • (개선)삼중 인용 부호 처리

홈페이지 문서(후키라이브러리>>후키템플릿) 수정

  • (오기?)”템플릿의 switch문” 중 “BOOLEAN 인덱스” 항목 내용 수정
  • (문법변경)”템플릿의 switch문” 중 “”반복 switch문” 항목 내용 수정

0.0.2 (2002.7.17)

hTemplate-0.0.2

  • FastTemplate와의 호환성을 지원하지 않음, FastTemplate와의 호환 버전은 필요하다면 LIGHT 버전으로 별도 공개하겠음
  • 미리 정의된 템플릿 변수 제공(“미리 정의된 템플릿 변수” 참조)
  • switch문 강화(“템플릿의 switch문” 참조)
  • URL 자동 변경 기능 보완
  • 복수 템플릿 파일에서 각 파일마다 독립적인 헤더 태그 내용 구성(“복수 템플릿 파일의 용법” 참조)
  • PHP_OS 상수를 이용하여 서버가 윈도우 시스템인지 아닌지 자동 판별
  • 템플릿 변수를 나타내는 “{” 문자를 일반 문자로 템플릿에 포함할 수 있음
  • 복수 case문을 나타내는 “|” 문자를 일반 문자로 switch문 안에 포함할 수 있음
  • 논리 부정 연산자 “!” 제공
  • assign() 함수가 나타난 이후에도 define() 함수를 사용할 수 있음
  • “define(템플릿명, 템플릿 파일명)”에 의한 단일 템플릿 파일 지정 방법 추가
  • 파일시스템용 후키 캐시 파일명 변경(class.hCacheFile.php -> class.hCache.php)
  • 파일시스템용 후키 캐시만 지원

0.0.1-패치5 (2002년4월25일)

hTemplate-0.0.1p5

  • 서버가 윈도우 시스템인지 아닌지 자동 판별
  • switch문 내에서 템플릿 변수 사용시 문제 해결
  • URL 자동 변경 기능 개선

0.0.1-패치4 (2002년4월1일)

hTemplate-0.0.1p4

다양한 형태의 URL을 지원하기 위하여 rebound_url 함수를 수정하였습니다.

0.0.1-패치3 (2002년3월25일)

hTemplate-0.0.1p3

복수 case문에서의 각 case문을 콤마대신에 “|” 문자로 구분하도록 수정하였습니다. 문제점을 지적하여 주신 MagicStorm(궁금) 님에게 감사드립니다.

  • 멤버변수 $CASE_SEPARATOR 추가
  • set_tpl_body 함수 수정
  • tag_to_string 함수 추가 수정

0.0.1-패치2 (2002년3월21일)

hTemplate-0.0.1p2

궁금 님이 지적하신 문제(태그 내에 템플릿 변수가 있는 경우)를 해결하기 위하여 수정하였습니다.

  • set_path 함수 수정
  • rebound_url 함수 수정
  • rebound_attrib_url 함수 신설
  • attrib_to_string 함수 수정
  • tag_to_string 함수 수정

0.0.1-patch1 (2002년2월26일)

hTemplate-0.0.1p1

error reporting level을 NOTICE까지 포함하여 설정하게 되면 몇몇 문장에서 NOTICE 에러가 발생하는 것을 확인하였습니다. 아래는 수정된 행번호 및 내용입니다. 이 문제는 amocra 님이 지적하여 주었습니다.

  • 222행 수정 : if (!empty($arg[“update”]));
  • 694행 수정 : if (isset($this->TPLS[“*_VAR_defined_in_TPL_*”])) $this->VARS = $this->TPLS[“*_VAR_defined_in_TPL_*”];
  • 777행 수정 : if (isset($this->VARS[$var_name]) && is_array($this->VARS[$var_name])) {
  • 855행 수정 : if (!$value || $this->empty_tpl(‘.’==$value[0] ? substr($value,1) : $value)) {

0.0.1-beta (최초 공개 버전,2002년1월26일)

hTemplate-0.0.1beta

  • FastTemplate와의 호환성에 중점을 두고 개발
  • 중첩 블록 기능 추가
  • 처리 속도 향상
  • 위지윅 방식으로 구현된 switch문
  • URL 자동 변경 기능

답글 남기기