いろいろ準備中

[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をいじるのも微妙です。
ちょっとした愚痴でした。

  1. 3 Responses to “[Zend Framework][xml] Zend_Config_Xmlでxmlの要素名に-(ハイフン)が使えない”

  2. By wozozo on 5月 9, 2008

    Zend_Config_Ini派ですけど、階層が深くなっていくとXMLのほうが楽かなって思うことがあります。

    XML書くの面倒でw

  3. By twk on 5月 9, 2008

    同じくIni派。多分演算子の優先順位 (-がマイナスとして解釈される) の問題じゃないですかね。
    $config->data->{“text-size”} て書けるの知らなかった。。

  4. By heavenshell on 5月 10, 2008

    はじめまして。こんにちは。
    同じくIni派です。Zend_Config_Yamlを心待ちにしているんですが、中々でませんねw

コメントを投稿する