본 리뷰에서는
제로보드 XE 버전(ZBXE)에 캐슬 PHP 버전(castle-php)을 적용하는 것에 대해서 이야기 하고자 합니다.
캐슬 PHP 버전은 기존 제로보드 4.x 버전에서는 lib.php와 _head.php 파일만 패치하게 되면, 쉽사리 적용이 가능합니다.
이것은 제로보드의 모든 소스 파일이 저 두개의 파일들 중에 하나를 모두 포함(include, require 등을 이용하여)하고 있기 때문이지요.
그런데, 최근의 제로보드인 ZBXE는 이것 보다는 조금 더 복잡한 구조를 가지고 있습니다.
먼저, 템플릿 방식의 스킨을 채용하고 있다는 점과 클래스로 되어 있다는 점
나아가서 XML 형태의 CDATA 구조로 데이터를 통신하고 있다는 점이 기존 제로보드와 가장 큰 차이라 할 수 있습니다.
- 기존 제로보드(4.x)와 최신 제로보드(ZBXE)의 구조적 차이
- 템플릿 방식의 스킨
- 클래스로 구현
- XML 언어로 구성된 CDATA 구조체 이용
그렇다면 이 제로보드 XE 버전에 현재의 캐슬 PHP 버전 적용이 가능할 가요?
결론적으로 말하자면,
현재의 캐슬 PHP 버전에서는 부분적으로만 적용이 가능하다는 것입니다.
제로보드 XE 버전의 파일들 중에서 ./config/config.inc.php 파일에 적용하게 되면, 일부에서는 적용이 가능합니다.
적용이 가능한 부분은 GET 메소드 형태로 전달되는 모든 입력 값과 XML 언어로 구성된 CDATA 구조체를 가지지 않은 POST 메소드 형태의 모든 입력값입니다.
그러나 제로보드 XE 버전에서는 많은 입력 값들이 XML 언어로 구성된 CDATA 구조체의 POST 메소드 형태로 전달되고 있기 때문에, 완전한 캐슬 PHP 적용이 되지 않고 있습니다.
XML 언어로 구성된 CDATA 구조체의 POST 메소드 형태는 일반 POST 메소드 형태의 응용이라고 보면 됩니다.
일반적은 POST 메소드 형태의 입력 값은 아래와 같은 형태로 구성이 됩니다.
POST /hello.php HTTP/1.1
Accept: */*
Accept-Language: ko
User-Agent: Mozilla/4.0
Host: zzigregi.com
Content-Length: 18
bar=hello&foo=hi~
이 경우
$_POST['bar']와
$_POST['foo']와 같이 선정의된(?) _POST 환경변수의 네임드 배열로 참조가 가능합니다.
그러나 XML 언어로 구성된 CDATA 구조체를 이용한 POST 메소드 형태는 아래와 같은 형태로 구성 됩니다.
POST /hello.php HTTP/1.1
Accept: */*
Accept-Language: ko
User-Agent: Mozilla/4.0
Host: zzigregi.com
Content-Length: 147
<?xml version="1.0" encoding="utf-8" ?>
<methodCall>
<params>
<bar><![CDATA[hello]]></bar>
<foo><![CDATA[hi~]]></foo>
</params>
</methodCall>
위와 같은 이유로 인하여, 기존의 참조 방식인
$_POST['bar']로는 더 이상 참조가 되지 않게 됩니다.
현재의 캐슬 PHP 버전에서는
$_POST['bar']와 같은 방식의 참조만을 대상으로 구현되어 있기 때문에,
완전하게 제로보드 XE 버전에 적용하는 것은 무리가 있습니다.
향후, 이 부분에 대한 보완이 되면 좋을 것이라 기대됩니다.
- 제로보드 XE 버전에 캐슬 PHP 버전을 적용하려면
- 제로보드에 특성화된 형태의 캐슬 PHP 버전 제작(castle_referee_rawphp)
- 요구기술
달팽이 -
현재로선 캐슬 적용하기가 힘들다는 거군요... 흠... 요즘 트랜드는 XML이 대세로 알고 있는데..
최신 버전에서 이것을 고민 하지 않은 것이 조금은 아쉽군요.
(아 물론 파싱 함으로 생기는 퍼포먼스 문제를 분명 고민했겠죠???)
덧붙임) 제로보드 블로그도 잘 만들어 놓으니까 괜찬네요. ^^