Php/Doctrine array hydration
Scary?  In what way?  I don't really get that.

It's just syntax.  If you really care, just cast the arrays as stdClass objects

foreach ( $p['PostComment'] as $comment )
{
  $comment = (object) $comment;
  $this-&gt;Controls-&gt;Add( new CommentPanel(
      $comment-&gt;text
    , $comment-&gt;User-&gt;nickname
    , $comment-&gt;last_updated_ts
  ));
}