Wadslog

[Zend Framework][xml] Zend_Config_Xmlでxmlの要素名に-(ハイフン)が使えない

May 8, 2008

Zend_Config_Xmlでは、コンフィグファイルを読み込むと、XMLの要素名をプロパティーとしてアクセスできるようになります。 test_config.xml

< ?xml version="1.0" ?>
 123457

というデータがあったら

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

comments powered by Disqus