PHP5.0.4でのDTOクラスについて

MapleDTO(Data Transfer Object)クラスを作って動かしてみたところ遷移先のページにPOSTされたデータがDTOクラスに入っていない・・・
調べてみたところ maple/core/BeanUtils.class.phpクラス内で下記のようなコードを見つけた。


 function getVars(&$instance) {
  $varArray = array();

  foreach (get_class_vars(get_class($instance)) as $key => $value) {
   $varArray[strtolower($key)] = true;
  }

  return $varArray;
 }

 (一部省略)

 function getSetterVars(&$instance) {
  $vars = BeanUtils::getVars($instance);

  $setterVars = array();

  foreach (get_class_methods(get_class($instance)) as $method) {
   if (preg_match("/^set/", $method)) {
    $attribute = strtolower(str_replace("set", "", $method));
     if (isset($vars[$attribute])) {
      $setterVars[$attribute] = true;
     }
   }
  }

  return $setterVars;
 }

POSTされたデータをDTOにセットするためにメンバ変数からsetterを探してるんだけど、ここで使われてるget_class_varsが問題。これはクラス内のメンバ一覧を取得するんだけど、どうやらPHP5.0.3以降はpublic属性のメンバしか取得できないようだ・・・(メソッド内から呼ぶ場合は出るみたいだけど)動作環境に上げられてるPHP5.0.2だとprivateなメンバでも表示されるようなことがどこかのMLに書いてあった。
で、自分が作ったDTOクラスを見てみると確かにメンバ変数はすべてprivate属性にしてある。本来ならこうしたほうがいいのだろうけど、こればっかりはしょうがないしな・・・
とりあえず、public属性に変更して対応するしかなさそうだ。
ExcelでDBのスキーマからDTOを生成するプログラムを書いたやつも修正する必要ありですな。