written: Jan 28 2002
last modified: Sep 20 2006
last modified: Sep 20 2006
클래스의 구성
후키템플릿 1.2.0 버전에서 사용하는 클래스는 모두 17가지 입니다. 한페이지 분량도 안되는 클래스들은 관계되는 클래스의 파일에 포함시켜도 되지만 캡슐화에 중점을 두고 작성하다보니 파일 구성이 방만(?)해 졌습니다.
No. | 패키지 | 클래스 종류 | 클래스가 정의된 파일명 | 적용버전 |
---|---|---|---|---|
1 | Template | hTemplate | class.hTemplate.php | 1.0.0 |
2 | " | hTemplateAssign | class.hTemplateAssign.php | 1.0.0 |
3 | " | hTemplateStructure | class.hTemplateStructure.php | 1.0.0 |
4 | " | hTemplateCompile | class.hTemplateCompile.php | 1.0.0 |
5 | " | hTemplateFile | class.hTemplateFile.php | 1.1.0 |
- | - | hFastTemplate | class.hFastTemplate.php | 1.1.1 삭제 |
6 | " | hTemplateDebug | class.hTemplateDebug.php | 1.0.0 |
7 | " | hTemplateCache | class.hTemplateCache.php | 1.2.0 |
8 | " | hTemplateFunction | class.hTemplateFunction.php | 1.2.0 |
9 | " | hTemplateFilter | class.hTemplateFilter.php | 1.2.0 |
10 | HTML | hHtmlParser | class.hHtmlParser.php | 1.0.0 |
11 | " | hHtmlClassify | class.hHtmlClassify.php | 1.0.0 |
- | - | hHtmlUrlRedirection | class.hHtmlUrlRedirection.php | 1.1.1 삭제 |
12 | " | hHtmlUrlParser | class.hHtmlUrlParser.php | 1.1.1 |
13 | cache | hCacheFile | class.hCacheFile.php | 1.0.0 |
14 | structure | hStack | class.hStack.php | 1.0.0 |
15 | class | hClassMember | class.hClassMember.php | 1.0.0 |
16 | globals | hGlobals | class.hGlobals.php | 1.1.0 |
17 | patterns | hSingleton | class.hSingleton.php | 1.1.0 |
클래스의 동작
웹서비스할 때 필요한 클래스 파일
class.hCacheFile.php
class.hClassMember.php
class.hTemplate.php
class.hTemplateStructure.php
class.hTemplateAssign.php
class.hTemplateFile.php
class.hTemplateCache.php
class.hTemplateFunction.php
class.hTemplateFilter.php
class.hGlobals.php
class.hSingleton.php
class.hClassMember.php
class.hTemplate.php
class.hTemplateStructure.php
class.hTemplateAssign.php
class.hTemplateFile.php
class.hTemplateCache.php
class.hTemplateFunction.php
class.hTemplateFilter.php
class.hGlobals.php
class.hSingleton.php
캐시를 갱신할 때 필요한 클래스 파일
class.hCacheFile.php
class.hClassMember.php
class.hTemplate.php
class.hTemplateStructure.php
class.hTemplateAssign.php
class.hTemplateFile.php
class.hTemplateCache.php
class.hTemplateFunction.php
class.hTemplateFilter.php
class.hGlobals.php
class.hSingleton.php
class.hStack.php
class.hHtmlParser.php
class.hHtmlClassify.php
class.hHtmlUrlParser.php
class.hTemplateCompile.php
class.hClassMember.php
class.hTemplate.php
class.hTemplateStructure.php
class.hTemplateAssign.php
class.hTemplateFile.php
class.hTemplateCache.php
class.hTemplateFunction.php
class.hTemplateFilter.php
class.hGlobals.php
class.hSingleton.php
class.hStack.php
class.hHtmlParser.php
class.hHtmlClassify.php
class.hHtmlUrlParser.php
class.hTemplateCompile.php
템플릿 파일 또는 PHP 소스가 수정되었으면 캐시를 갱신하여야 합니다. 템플릿 파일이 수정되었을 때는 후키템플릿이 자동으로 캐시를 갱신해 줍니다. 그러나 후키템플릿에서 제공하는 클래스 파일과 같은 php 소스가 변경되었을 때는 캐시를 자동으로 갱신해 주지 못하기 때문에 기존의 캐시를 강제적으로 지워주든지 아니면 객체 생성할 때 두 번째 인수인 캐시 정보의 속성 "update"의 값을 true로 설정해 주셔야 합니다
[code php;gutter:false]
$tpl = new hTemplate('./templates',
array(
'update' => true
)
);
[/code]
1.2.0 버전부터는 후키템플릿툴에 포함된 17개의 클래스 파일이 수정되었을 때도 자동으로 캐시를 갱신해 줍니다.
템플릿 정보를 디버깅할 때 필요한 클래스 파일
class.hCacheFile.php
class.hClassMember.php
class.hTemplate.php
class.hTemplateStructure.php
class.hTemplateAssign.php
class.hTemplateFile.php
class.hTemplateCache.php
class.hTemplateFunction.php
class.hTemplateFilter.php
class.hGlobals.php
class.hSingleton.php
class.hStack.php
class.hHtmlParser.php
class.hHtmlClassify.php
class.hHtmlUrlParser.php
class.hTemplateCompile.php
class.hTemplateDebug.php
class.hClassMember.php
class.hTemplate.php
class.hTemplateStructure.php
class.hTemplateAssign.php
class.hTemplateFile.php
class.hTemplateCache.php
class.hTemplateFunction.php
class.hTemplateFilter.php
class.hGlobals.php
class.hSingleton.php
class.hStack.php
class.hHtmlParser.php
class.hHtmlClassify.php
class.hHtmlUrlParser.php
class.hTemplateCompile.php
class.hTemplateDebug.php
각 클래스의 기능
hTemplate 클래스
후키템플릿을 전체적으로 관리하는 클래스이며, 모든 public 메소드를 가지고 있습니다.
클래스와 클래스를 실선으로 연결된 것은 클래스 내부에서 객체 생성한 후 객체를 이용하여 접근한다는 의미이며 점선으로 연결된 것은 상속관계에 있음을 나타냅니다.
Flow No | template type | variable type |
---|---|---|
① | file or no-file | string |
② | template infomation | array |
③ | ||
④ | ||
⑤ | ||
⑥ | template variable | string |
⑦ |
hTemplate 클래스는 상황에 따라 아래와 같이 필요한 클래스를 불러다가 처리합니다.
TML 문서가 변경된 후 처음 접속할 때의 동작 수순
① -> ② -> ③ -> ④ -> ⑤ -> ⑥ -> ⑦
① -> ② -> ③ -> ④ -> ⑤ -> ⑥ -> ⑦
이와 같이 템플릿 파일이 변경된 후 처음 후키템플릿을 실행하게 되면 모든 클래스를 불러다가 전 과정을 다 밟게 됩니다.
따라서 이 과정에서는 class.hTemplateCompile.php 파일과 HTML 패키지(hHtmlParser, hHtmlClassify, hHtmlUrlParser 클래스)도 필요하게 됩니다.
이 과정은 단 한번만 거치게 되며 그 다음부터는 아래와 같은 동작 수순을 밟게 됩니다.
HTML 문서가 변경된 후 두 번째 이후 접속할 때의 동작 수순
④ -> ⑤ -> ⑥ -> ⑦
④ -> ⑤ -> ⑥ -> ⑦
템플릿 파일이 변경된 후 두 번째 이후 접속할 때는 ④부터 실행되기 때문에 HTML 패키지와 hTemplateCompile 클래스는 필요없으며 hTemplateCache 클래스, hCacheFile 클래스, hTemplateAssign, hTemplateStructure 클래스만 불러다가 실행하게 됩니다.
hTemplateAssign 클래스
템플릿 변수를 관리해주는 클래스로 템플릿 변수의 초기화, 추가, 수정, 삭제 및 출력 등을 담당합니다.
hTemplateStructure 클래스
템플릿 정보 및 템플릿 변수 정보는 모두 hTemplateStructure 클래스 내에 정적 멤버로 정의되어 있는 템플릿 정보 리스트 및 템플릿 변수 리스트에 기록되어 있습니다. 이 클래스는 인스턴스를 생성하지 않고 정적 멤버로만 사용됩니다.
hTemplateCache 클래스
1.2.0 버전부터 제공되는 클래스로 템플릿 캐시 관련 기능을 통합하여 수행합니다. hCacheFile 클래스는 필요에 따라 hTemplateCache 클래스 내에서 호출합니다.
hCacheFile 클래스
파일시스템용 캐시핸들러입니다. 후키 템플릿과는 독립적으로 동작하는 클래스로 캐시가 필요한 곳이면 어느 곳에서나 이용할 수 있도록 작성되어 있습니다.
hTemplateCompile 클래스
템플릿 파일을 템플릿으로 변환시켜주며 이 과정에서 HTML 패키지를 불러다가 URL 자동 변경과 같은 여러 가지 처리를 하게 됩니다.
HTML 패키지
HTML 패키지는 hHtmlParser, hHtmlClassify, hHtmlUrlParser 클래스로 구성되어 있습니다. HTML 패키지 중에 hHtmlParser 클래스는 후키템플릿과는 독립적으로 작성되어 이미 공개된 HTML 파서입니다.
hFastTemplate
기존에 사용하고 있던 FastTemplate 문서(php 소스 및 템플릿 파일)을 수정없이 사용하기 위해 작성된 클래스입니다. 1.1.1 버전부터 삭제되었습니다.
hTemplateDebug
개발 과정에서 현재까지 할당된 템플릿 변수의 상태를 실시간으로 확인할 수 있는 디버깅 기능과 컴파일된 템플릿 파일 정보를 실시간으로 확인할 수 있는 디버깅 기능을 위해 작성된 클래스입니다.
이 클래스 파일을 보면 알겠지만 기능 구현만을 신경쓰다보니 소스 코드가 전혀 정리되어 있지 않습니다. 향후 기능을 보완해 가면서 하나 하나 정리되어야 할 것 같습니다.
hTemplateFile
템플릿 파일 관리 클래스로 파일 변경여부, 기본 디렉토리 관리 등 템플릿 파일 관련 파일시스템을 다루기 위해 작성된 클래스입니다.
hClassMember
PHP에서 제공되지 않는 멤버 특성을 지원하기 위하여 작성된 클래스로 현재는 젠드엔진 1.0에서 소멸자를 흉내내기 위하여 작성되어 있습니다. 따라서 소멸자를 정식으로 지원하고 있는 젠드엔진 2.0에서는 불필요한 클래스입니다.
hStack
HTML 패키지 중에서 hHtmlParser 내에서 사용되는 클래스로 LIFO(Last In First Out) 자료구조인 스택(stack)을 구현하여주는 클래스입니다.
hGlobals
수퍼글로벌변수를 이용하여 절대경로를 상대경로로 수정하는 등과 같이 전역변수에 관계된 기능을 처리하는 클래스입니다.
hSingleton
디자인 패턴 중에서 Singleton 패턴을 처리하기 위해 작성된 클래스입니다.
'phpsource > 템플릿' 카테고리의 다른 글
{후키템플릿}9.2.공유영역이 분리된 템플릿 (0) | 2006.09.20 |
---|---|
{후키템플릿}9.1.가장 간단한 예제 (0) | 2006.09.20 |
{후키템플릿}1.5.FastTemplate->후키템플릿 (0) | 2006.09.20 |
{후키템플릿}1.4.FastTemplate 호환 (0) | 2006.09.20 |
{후키템플릿}1.3.페이지 작성 과정 (0) | 2006.09.20 |