2010-02-21 6 views
0

Je ne me sens pas bien de mélanger des tableaux avec des objets, mais je ne suis pas sûr de le faire.Mélange de tableaux et d'objets

// Populate array 
foreach($participants as $participant){ 
    $participants[$key]['contestant'] = new Contestant($participant); 
    $participants[$key]['brand'] = new Brand($brand); 
    $key++; 
} 

[...] 

// Print array 
foreach($participants as $participant){ 
    print "Name: " . $participant['contestant']->name; 
    print "Nationality: " . $participant['contestant']->nationality; 
} 

Je ne suis pas à l'aise sur la partie $contestant['contestant']->name. Je me sentirais mieux à propos de l'utilisation d'objets exclusivement.

Est-il en fait considéré comme une mauvaise pratique de mélanger des objets et des tableaux, ou est-ce que je suis obsédé par quelque chose que tout le monde trouve correct?

+1

Si vous ne vous sentez pas à l'aise avec '$ participant ['concurrent'] -> name' alors vous pouvez utiliser' ArrayObject' et utiliser '$ participant-> contestant-> name' – Gordon

+0

@Gordon: C'est excellent , Merci! –

Répondre

2

Ça me va. Lorsqu'un tableau a du sens, utilisez un tableau. Lorsqu'un objet a du sens, utilisez un objet. Cependant, vous pensez peut-être qu'un participant a plus de sens en tant qu'objet, ce qui peut être le cas si vous regardez cet exemple de code relativement petit. Si c'est le cas, rédigez une classe Participant rapide. Si cela vous semble trop lourd, ne vous inquiétez pas. À ce stade, c'est une préférence personnelle, puisque votre code fonctionne, en fait. Tout dépend de la base de code avec laquelle vous préférez travailler à l'avenir.

1

Vous vous inquiétez inutilement. Il est assez courant dans d'autres langues de mélanger des séquences/mappages avec des objets. Les tableaux sont utiles lorsque vous ne connaissez pas le nombre d'éléments ou seulement un ensemble d'éléments "ragtag" existe, et les objets sont utiles lorsque vous connaissez exactement le nombre d'éléments, et que ces éléments ont chacun un but spécifique.