itok's Lab

昔の開発ネタを記録として残してます

XML_Feed_Parserで”Indirect modification of overloaded property”

PHP5.2以降限定の話だと思いますが、PEAR::XML_Feed_Parserでforeach文を使用すると

Indirect modification of overloaded property
XML_Feed_Parser_...::$idMappings has no effect

といったNoticeが出力されます。__get関係の問題なのかな?とか思ったりしていろいろさまよってみたんですが、とりあえず、解決法は本家サイトのバグ掲示板にありました。

46  /**
47   * Where we store our entry objects once instantiated
48   * @var array
49   */
50  public $entries = array();
51  public $idMappings = array(); // これを追加

XML/Feed/Parser/Type.phpの51行目あたりに1行追加したらよいようです。継承と__getまわりの問題だったのかな?ま、いいか。