久しぶりにPEARのXML_Serializerを使ってみました。
昔使ったときはそのとき働いていた会社の上司が用意してくれていたので、特に自分で設定することはなかったのですが・・・
今回はそうも行かないので自分で調べて設定してみました。
とりあえず、オプションの設定を毎回書くのがめんどくさかったので…extendsしてクラスを作ってみました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<?php
class sample_Serializer extends XML_Serializer {
function sample_Serializer($options=null){
$this->PEAR();
if(!is_array($option)){
$options = array(
"indent" => " ",
"linebreak" => "n",
"typeHints" => false,
"addDecl" => true,
"encoding" => "UTF-8",
"rootName" => "xml",
"rootAttributes" => array("version" => "1.0"),
"defaultTagName" => "item",
);
}
$this->options = array_merge($this->_defaultOptions, $options);
}
function XML_render(){
$xml = $this->getSerializedData();
if(PEAR::isError($xml)){
return $xml ;
}
header("Content-Type:application/xml");
print $xml;
}
}
|
まあコンストラクタいじるのはいいとして、いちおXML形式で表示させる関数のっけました。
たぶん、XML_Serializerにはないはずですよね・・・
XML_render
あらかじめserializeメソッドを実行しておきます。
次ににこのメソッドを実行すると、勝手に表示されるはずです。
serializeされていない場合はPEARエラーを返します。
ちなみにショートタグの設定をしていると、XMLのパーサエラーがでてしまうので、ショートタグを必ずOFFにしたほうがいいです。
僕は今回.htaccessが使えない環境なのでini_setで設定しました。
1
2
3
|
<?php
ini_set("short_open_tag","off");
?>
|
オプションの設定とかはこのサイトを参考にしてみたり…。
なんか突っ込みどころが満載だと思うので突っ込んでください。