dedlfix: Tipps für die Verwendung von Array oder Objekt

Beitrag lesen

Tach!

Du musst dich also fragen, was du da eigentlich hast. Und dann die passende Implementierung nehmen.

Ergänzend dazu meinen Standpunkt. Ein Array im allgemeinen Sinne ist normalerweise eine Sammlung von gleichartigen Dingen. In anderen Sprachen ist die Länge konstant oder anders gesagt die Anzahl der Elemente. Variable Anzahl von Elementen werden meist als List(e) verwaltet. Dazu kommen noch andere Container, zum Beispiel Map oder Dictionary, bei denen man ihre Elemente nicht über einen Index anspricht, sondern die Name-Value-Paare verwalten.

PHP hat diese und weitere Anwendungsfälle zusammengefasst und verkauft es als Array. Für deine Frage sind die Fälle herkömmliches Array, Liste und Map/Dictionary relevant.

Man kann ein Dictionary auch als Sammlung unterschiedlicher Dinge verwenden, wenn die Sprache keine feste Typisierung hat, wie es bei PHP der Fall ist. Damit kann man auch das nachbilden, was bei stark typisierten Sprachen ein Objekt (oder Struct) erfordert, ein Container für die Zusammenfassung von Eigenschaften unterschiedlichen Typs. Üblicherweise beschreibt ein Objekt (oder die Klasse als dessen Bauplan) ein konkretes Ding, das mehrere Eigenschaften hat.

Was also nun nehmen? Wie gesagt, kannst du PHP-Arrays als assoziative Arrays genauso verwenden wie Objekte. Sinnvoll ist das aber nur begrenzt, vor allem bei kleineren Anwendungen hat das kaum Nachteile. Wenn deine Anwendung aber objektorientiert ist, dann solltest du für deine Datenobjekte auch Objekte verwenden, und Arrays nur als Container, um mehrere gleichartige Dinge abzulegen.

Dazu kommt, dass eine IDE die Definition der Eingenschaften in Klassen lesen kann und somit weiß, welche Eigenschaftsnamen sie bei der Autovervollständigung oder der statischen Code-Analyse berücksichtigen kann. Keys in assoziativen Array hingegen sind lediglich Strings, auch Magic Strings genannt. Nimmt man den richtigen String, passiert sozusagen Magie, sonst nicht. Maps / Dictionarys / assoziative Arrays eigenen sich also eher als Container, wenn die Namen / Keys zu den Werten nicht bereits zur Entwicklungszeit bekannt sind.

dedlfix.