На PHP/учение массива гидратации


Согласно Доктрине документов, вы должны использовать массив вместо того, чтобы записать гидратации гидратации при получении данных только для чтения.

К сожалению, это означает, что я должен использовать синтаксис массива (в отличие от объекта синтаксис) для ссылки на данные.

$q = Doctrine_Query::create()
    ->from('Post p')
    ->leftJoin('p.PostComment pc')
    ->leftJoin('pc.User u')
    ->where('p.post_id = ?', $id);

$p = $q->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);

...

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

Может это только у меня, но все эти строковые литералы в качестве индексов массива страшновато. Кто-нибудь есть некоторые идеи для это убирать?



2486
10
задан 26 января 2011 в 04:01 Источник Поделиться
Комментарии
1 ответ

Страшно? В каком смысле? Я не очень понимаю.

Это просто синтаксис. Если вы действительно заботитесь, просто бросил массивы как объекты stdClass

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

5
ответ дан 26 января 2011 в 11:01 Источник Поделиться