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

Laravel 10 release

The release of Laravel 10: The king of types. Alles wat je moet weten over de nieuwe major release!

Auteur: Noah Gillard
PHP / Laravel Developer
Noah Gillard AI generated Face
laravel 10 banner

Saloon - Package / SDK API integrations

API integraties voor een waaier aan services. Weinig tot geen herbruikbare code? Met Saloon maak je er een compacte / overzichtelijke SDK/Package van die je kan hergebruiken in al je projecten en kan maintainen op 1 plek.

Auteur: Noah Gillard
PHP / Laravel Developer
Noah Gillard AI generated Face
Saloon hero image

Codana wint Digital Champ of the year award 2022

Codana is de winnaar van de FeWeb Digital Champ award 2022

Auteur: Joris De Groot
Strategic Director and Managing Partner
Joris De Groot
FeWeb Digital Champ award Codana

De ideale eerste werkplek

Ik ben Ward Vandevoort, 22 jaar en begin november 2021 ben ik gestart bij Codana als junior backend developer. Ontdek mijn verhaal bij Codana! 

Auteur: Ward Vandevoort
Developer
Ward Vandevoort
groepsfoto

Teambuilding met internationale collega's

Een zalige teambuilding in Antwerpen!

Auteur: Noah Gillard
PHP / Laravel Developer
Noah Gillard AI generated Face
groepsfoto codana burgerij

Het leven als React developer bij Codana: 1 jaar in dienst

“U kan bij ons aan de slag als React developer!”. Wow, zalig! Ik was natuurlijk super blij dit te horen! Maar, ik had nog nooit een lijn React geschreven.

Auteur: Thomas Timmermans
Frontend Developer
Thomas Timmermans
Ik na 1 jaar in dienst