유닛테이블 – 06.구성

홈페이지의 구성요소

홈페이지는 서로 독립적인 여러 개의 요소로 구성되어 있는데, 이를 분류하면 PREFIX, HEAD, BODY, SUFFIX 부분으로 나눌 수 있습니다. PREFIX부분은 HTML 태그 이전에 나타나는 부분으로 <!DOCTYPE HTML PUBLIC ‘-//W3C//DTD HTML 4.0//EN’>와 같이 문서 종류를 지정해 줍니다. HEAD 부분은 TITLE, META, CSS(Cascading Style Sheet), SCRIPT 부분으로 세분될 수 있고, CSS와 SCRIPT를 더 세분하면 현재 문서에 내장하는 스타일과 외부파일을 이용하는 스타일로 나눌 수 있습니다. 마지막에 나타나는 SUFFIX는 아직 홈페이지를 작성할 때 사용된 적은 없지만 개념상 포함시켰습니다.

방문객이 홈페이지에서 접할 수 있는 거의 모든 데이터는 BODY 부분에 저장되며, 따라서 가장 중요한 부분입니다. BODY 부분을 분석해 보면 레이아웃을 나타내는 HTML 태그(주로 TABLE, TR, TD 태그)와 그 안에 표시할 데이터로 나눌 수 있습니다.

유닛테이블 엔진의 구성

홈페이지를 작성할 때 가장 어려움을 많이 느끼게 되는 BODY 부분의 레이아웃과 데이터는 유닛테이블 엔진에서 담당하고, 나머지 부분은 클래스 clsHtmltag로 작성된 Htmltag 엔진에서 담당합니다. 페이지웍스 엔진은 이 두 부분을 종합 관리해주는 엔진입니다. 각 클래스 엔진의 상속관계를 보면 아래의 그림과 같습니다.

< 유닛테이블 엔진의 상속관계(설계) >

위 그림으로 보면 많은 클래스가 다중 상속받고 있는데 PHP에서 이것이 가능하냐고요? 불가능하죠. PHP는 다중상속을 지원하지 않습니다. 따라서 PHP에서는 각 클래스를 독립적으로(객체 지향적으로) 작성하는 것이 무척 어렵지요. 위 그림은 클래스 설계를 이렇게 했다는 것을 보여줄 뿐입니다. 유닛테이블을 PHP 스크립트로 구현하다보니 다중상속이 불가능하여 할 수 없이(울며 겨자 먹기) 치졸한 단일상속으로 작성하였습니다. PHP 스크립트 코드로 작성된 실제 클래스 코드의 상속관계는 아래 그림과 같습니다.

< 유닛테이블 엔진의 상속관계(구현) >

참고로 제 웹사이트에서는 후키라이브러리를 이용하여 다중상속하고 있으며, 따라서 설계대로 각 클래스를 서로 독립적으로 작성, 관리하고 있습니다. 그러나 여기서 소개되는 공개용 버전은 PHP 스크립트가 지원하는 기능만을 사용하도록 원본의 내용을 대폭 수정하게 되었습니다. 또한 파일 크기를 줄이기 위해 페이지툴에서 사용하지 않는 메소드 또는 프로퍼티는 모두 삭제하였고, 특히 이 과정에서 데이터베이스 엔진은 완전히 다시 작성하게 되었습니다. 그러나 이러한 과정은 공개하기 위한 작업일 뿐이며, 페이지툴 자체의 기능이 축소되거나 삭제되지는 않았습니다.

답글 남기기