phpsource/템플릿2000. 8. 6. 16:15
유닛테이블에서는 데이터뿐만 아니라 레이아웃까지도 템플릿 요소로 구성되어 있고, 또한 템플릿 파일의 해석 결과를 가지고 그대로 HTML 태그를 생성하는 것이 아니라, 중간단계의 코드를 생성하며 이를 데이터베이스를 통해 중계하고 있어서 상당히 복잡한 편입니다. 그러나 설계 개념이 명확하기 때문에 이해하고 나면 아주 논리적이며, 덤으로 상당히 유연하게 프로그램을 개발할 수 있다는 것을 알게 될 것입니다.
이러한 설계 개념을 명확히 이해하여야 다음 장에서 설명하는 유닛테이블에서 사용하는 템플릿상수 및 템플릿 변수를 제대로 이해할 수 있습니다. 앞장 "유닛테이블의 동작"을 다시 한번 살펴보시고 아래를 보시기 바랍니다. "유닛테이블의 동작"에서 언급된 유닛테이블의 동작 메커니즘은 기능성을 중심으로 설명하였고, 여기서는 이를 데이터형식을 중심으로 나타내 보겠습니다.
< 각 엔진의 데이터형식 >
데이터형식 UTIS(UnitTable Input String), UTOS(UnitTable Output String)
UTIS 형식은 템플릿 파일에서 사용되는 문자열 표현방법으로 템플릿 파일에 대하여는 앞장 "템플릿 파일의 구성", "모드 및 속성지정자"와 "레이아웃을 위한 자료구조"에서 설명하였고, UTOS 형식은 우리가 알고 있는 HTML 태그로 구성된 HTML 파일에서 사용되는 형식으로 parseprint() 함수로 생성되는 HTML 파일의 내용이 그대로 메모리에 저장되어 있는 것과 같습니다.
데이터형식 UTEA(UnitTable Element Array)
유닛테이블에서 가장 중요한 데이터형식이 바로 UTEA 형식입니다. "유닛테이블의 동작 메커니즘"에서도 살펴보았듯이 템플릿 파일이 변경되었을 때와 변경되지 않았을 때의 parse() 메소드가 동작하는 것이 다릅니다. 우선 템플릿 파일이 변경되었을 때, parse() 메소드를 실행하면 UTIS 데이터(템플릿 파일)를 입력받아 UTEA 형식의 배열 데이터를 생성한 후 데이터베이스 엔진으로 UTEA 데이터를 보내어 데이터베이스 엔진에서 배열을 직렬화(serializing)한 후 데이터베이스에 저장하여 줍니다. 두 번째의 경우로 템플릿 파일이 변경되지 않았을 때, parse() 메소드를 실행하면 데이터베이스로부터 직렬화된 데이터를 읽어들여 배열화(unserializing)하여 UTEA 형식의 데이터로 바꾼 후 메모리에 올립니다.
htmlprint() 메소드에서는 메모리에 있는 UTEA 형식의 중간코드를 해석하여, UTOS 형식의 HTML 태그를 생성한 후 웹브라우저의 화면으로 데이터를 전송합니다.

Posted by 방글24