Naar de inhoud
Inzichten

Nooit* meer arrays!

keynote

Larry Garfield is een prominente spreker in de PHP gemeenschap en heeft veel ervaring met het publieke spreken in de community. Hij is een van de vele topsprekers die deze conferentie hebben bijgewoond. En, nou ja, de boodschap is heel duidelijk: gebruik nooit* arrays.
(*) in public

Waarom? Omdat het een soort van hack is. Omdat de waarden niet gegarandeerd van hetzelfde type zijn. Omdat ze slecht presteren. En omdat PHP ze niet heeft... *hapt naar adem*

Wat Larry bedoelt is dat de definitie van een "array" een geordende reeks van waarden van hetzelfde type is, terwijl in PHP arrays associatieve arrays zijn zonder typegaranties. Numerieke arrays, waarbij je niet de sleutel in de opdracht geeft, zijn een hack en gedragen zich raar (de sleutels zijn niet altijd sequentieel).

Toen noemde hij een van de grootste bugs van de afgelopen jaren, namelijk Drupageddon (2014), die ook te wijten was aan een aantal code verwachten numerieke toetsen, maar was (in bepaalde omstandigheden) het veroorzaken van een SQL-injectie risico.

Dus... Wat is er beter? Doelgerichte datastructuren! Weet je waar hij aan toe is? Yep, objecten natuurlijk. En dat is waar PHP al alles heeft wat je nodig hebt.... Wist je dat er zoiets was als het ArrayObject? Extend het om een “TypedArray” te maken. Of gebruik de IteratorAggregate, Countable enTraversable interfaces om sequenties en sets... te maken. Je kneed ze zo dat ze uniek, gesorteerd, getypeerd... en alles wat je wil zijn. 

Maar werken met objecten is trager dan een array, juist? Nope…

Techniek

Runtime (s)

Geheugen (bytes)

Associative array

9.4311 (n/a)

541,450,384 (n/a)

stdClass

11.2173 (+18.94%)

589,831,120 (+8.94%)

Public properties

8.2172 (-12.87%)

253,831,584 (-53.12%)

Private properties

11.0881 (+17.57%)

253,833,000 (-53.12%)

Anonymous class

8.1095 (-14.07%)

253,832,368 (-53.12%)

Controleer Larry's slidedeck voor de benchmark die hij heeft gebruikt, maar de conclusie hierboven is veelzeggend.

Lees ook nog

Dit artikel maakt onderdeel uit van onze PHPBNL20 blogs

Meer inzichten

  • Lightning Talks: De nieuwe rol van AI in development

    Tijdens onze laatste Lightning Talks stond één vraag centraal: Hoe kan AI ons helpen om dit proces slimmer, sneller en betrouwbaarder te maken, zonder onze menselijke expertise te vervangen?

    Lightning Talks: De nieuwe rol van AI in development
  • Lightning Talks: Tickets die vertrouwen opbouwen & ChatGPT als analyse-assistent

    Twee onderwerpen die op het eerste gezicht ver uit elkaar liggen, maar toch dezelfde rode draad delen: bouwen aan vertrouwen en kwaliteit.

    Lightning Talks: Tickets die vertrouwen opbouwen & ChatGPT als analyse-assistent
  • Codana Lighting Talks | EAA Deadline & AI Code Editors

    De EAA-deadline van 2025 is voorbij. Wat nu? Lees onze analyse van de accessibility-wet en een vergelijking van 4 AI code assistenten. 

    Codana Lighting Talks | EAA Deadline & AI Code Editors
  • PHPverse 2025: Onze Inzichten en Takeaways

    Onze recap van PHPverse 2025! Ontdek wat we geleerd hebben over FrankenPHP, Symfony, Laravel, AI en de toekomst van PHP.

    PHPverse 2025: Onze Inzichten en Takeaways
  • De European Accessibility Act (EAA): Wat betekent dit voor jou?

    In deze blog zetten we de belangrijkste vragen en antwoorden op een rij: wat houdt de EAA precies in, wie moet eraan voldoen, en wat betekent dat voor jouw website of webshop? 

    De European Accessibility Act (EAA): Wat betekent dit voor jou?
  • SymfonyCon 2024: code in harmonie

    Editie 2024 van SymfonyCon vond plaats in het prachtige Wenen, dus een van onze experts ging ter plaatse. Even de nachttrein op, wat cultuur opsnuiven, en dan: volop focussen op twee dagen vol Symfony. Onze inzichten lees je in dit verslag! 

    SymfonyCon 2024: code in harmonie