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

More insights

Een efficiënt datamanagementsysteem voor toerisme

Een TDMS of Tourist Data Management System, is simpelweg een platform dat data uit verschillende bronnen ophaalt, intern al dan niet automatisch verwerkt en deze gegevens terug aanbiedt aan externe platformen.

Auteur: Tom Van den Eynden
Web Architect | Coordinator
Tom Van den Eynden
laptop

Systemen voor gegevensbeheer in toerisme

In dit artikel verkennen we wat een TDMS is, waarom het essentieel is voor de toerisme-industrie, en hoe technologieën zoals Laravel en ElasticSearch het verschil kunnen maken. 

Auteur: Tom Van den Eynden
Web Architect | Coordinator
Tom Van den Eynden
tdms

Beveiliging van Laravel 101

In deze blogpost gaan we dieper in op een aantal veelvoorkomende Laravel beveiligingsfouten.

Auteur: Robbe Reygel
PHP developer
laravel

Test Driven Development - toepassing op een project

TDD, of voluit Test Driven Development, is een aanpak van ontwikkeling waarbij we vertrekken van het schrijven van tests. 

Auteur: Sarah Jehin
PHP developer
Sarah Jehin
development

De OSLO-standaard: hoe gestandaardiseerde gegevensuitwisseling ons verder brengt

De OSLO-standaard is een term die je misschien wel eens hebt horen vallen in de context van gegevensuitwisseling en digitale transformatie, maar wat houdt het precies in en wat zijn de voordelen ervan?

Auteur: Benjamin Verhaegen
PHP Developer
benjamin_verhaegen
shaking_hands_black_white

De toekomst van web applicaties: wat kunnen we verwachten?

In de afgelopen jaren hebben web applicaties een enorme evolutie doorgemaakt. Maar wat heeft de toekomst voor ons in petto? Je ontdekt het allemaal in deze blog.

Auteur: Tom Van den Eynden
Web Architect | Coordinator
Tom Van den Eynden
computerscherm met code