木曜日, 11月 16, 2006, 11:52 PM - PHP
久々にPHPネタをっと。xFrameworkの次バージョンであるxFramework2.1.0の開発をやっていたときに気がついたことです。
PHP5から(細かいバージョン忘れた)SimpleXMLというXMLパーサ機能を備えたライブラリが使えるようになりました。SimpleXML自体の使い方はググればたくさん出てきます。
でだ。
通常オブジェクトであれ、配列であれシリアライズ(serialize)することで、それらを文字列化することができる。
そしてunserizliseすることで、もとのオブジェクトや配列に戻すことができる。
例えば配列をそのまま、ファイルに保存して、ファイルから文字列を呼び出して配列を復元するなどが容易に行える、とーっても便利なものなのですが・・。
が!しかし。
SimpleXMLオブジェクトをシリアライズ化してアンシリアライズしてもとにもどそうとしても、もとにもどせません(;_;)
正確に言うと、シリアライズ自体は成功するんだけども、アンシリアライズした時に、もとのSimpleXMLオブジェクト(SimpleXMLElementオブジェクト)に戻すことができません。
なぜだーって思いながら色々試したけど、だめでした。
他にも同じ現象の人がいたので、まーだめなんだろうなぁ、とあきらめました。
まだPHP5.2.0で検証していないので、わからないですが(PHP5.1.6で試しました)そのうちなおるだろっということで放置。
SimpleXMLのオブジェクトをシリアライズすれば、保存XMLの保存簡単じゃーんっておもったそこの人!ご注意くだされ。
逆にうまくいった人教えてください(他力本願)