2 ms·
There's plenty to hate about PHP, but most of my gripes have been repeated ad nauseam all over the internet. Yet one issue that really drives me bonkers doesn't
by RyanMcGreal 16y ago
There's plenty to hate about PHP, but most of my gripes have been repeated ad nauseam all over the internet. Yet one issue that really drives me bonkers doesn't seem to have received the opprobrium it deserves: Functions can take default named arguments, but insist on referencing named arguments by order, not name. This is just utterly asinine.
- nuclear_eclipse 16y agoThat's because PHP is heavily influenced by C and Perl, both of which exhibit the same behavior.
- RyanMcGreal 16y agoWhat's the point of named arguments if you can't do something like the following (e.g. Python)? >>> def some_func(a=1, b=2, c=3): return (a + b) * c >>> val1 = some_func() >>> val1 9 >>> val2 = some_func(b=3) >>> val2 12 >>> val3 = some_func(c=5) >>> val3 15 >>>
- nuclear_eclipse 16y agoI completely agree with you, and I much prefer Python's method of handling it. I was at explaining why PHP acts the way it does.
- RyanMcGreal 16y agoYes, of course. I wasn't holding you responsible. :)
- phaylon 16y agoRaw core Perl doesn't have named arguments. You can pass in a list of key/value pairs and the function can simply pull those in a hash, but you don't need to have them in the right order for that. I don't know all libraries on CPAN that implement some kind of function signature or argument validation, but I can't remember seeing one that requires ordered named arguments.
- eli 16y agoYeah, that really does stink. Once you get more than 2 or 3 parameters, it's tempting to just pass a $config hash instead.