[Zend Framework][xml] Zend_Config_Xmlでxmlの要素名に-(ハイフン)が使えない
5月 8th, 2008 Posted in Zend Framework
Zend_Config_Xmlでは、コンフィグファイルを読み込むと、XMLの要素名をプロパティーとしてアクセスできるようになります。
test_config.xml
< ?xml version="1.0" ?> <testconfig> <data> <text>123457</text> </data> </testconfig>
というデータがあったら
require_once 'Zend/Config/Xml.php'; $config = new Zend_Config_Xml('./test_config.xml'); echo $config->data->text;
として読み出せるのですが、xmlの要素名に-(ハイフン)を使うと、PHP(というか大体のプログラム言語か?)ではプロパティー名に-を使えないので、上記のようにアクセスできなくなってしまいます。
< ?xml version="1.0" ?> <testconfig> <data> <text>123457</text> <text-size>12px</text-size> </data> </testconfig>
require_once 'Zend/Config/Xml.php'; $config = new Zend_Config_Xml('./test_config.xml'); // アクセスできない echo $config->data->text-size; // 0 PHP Noticeがでる // アクセスできるけど面倒くさい echo $config->data->{"text-size"}; // 12px $text_size = "text-size"; echo $config->data->$text_size; // 12px
ハイフン使わないでアンダーバー使えという話ですが、なんとなく気持ち悪いです。このためにZend_Config.phpやZend_Config_Xml.phpをいじるのも微妙です。
ちょっとした愚痴でした。
3 Responses to “[Zend Framework][xml] Zend_Config_Xmlでxmlの要素名に-(ハイフン)が使えない”
By wozozo on 5月 9, 2008
Zend_Config_Ini派ですけど、階層が深くなっていくとXMLのほうが楽かなって思うことがあります。
XML書くの面倒でw
By twk on 5月 9, 2008
同じくIni派。多分演算子の優先順位 (-がマイナスとして解釈される) の問題じゃないですかね。
$config->data->{“text-size”} て書けるの知らなかった。。
By heavenshell on 5月 10, 2008
はじめまして。こんにちは。
同じくIni派です。Zend_Config_Yamlを心待ちにしているんですが、中々でませんねw