4 ms·
Sorry I haven't watched the video (don't have headphones) but I can understand why php changes the order or function params sometimes like array_filter wants th
by Crazyontap 7y ago
Sorry I haven't watched the video (don't have headphones) but I can understand why php changes the order or function params sometimes like array_filter wants the array first and callback second and array_map wants it in reverse.
But if you think about it array_filter expects an array first and function second because the callback is optional and it compares to false if left out. OTOH with array_map there is only one function callback and there can be N number of arrays so the function needs to be the first and the arrays second.
It makes perfect sense to me but for a lot of people it may look like inconsistencies.
- viraptor 7y agoIt's not an either/or. Those signatures are inconsistent and there's a reason they were made that way. It could be done another way. (detecting the type of parameters or having a different name for the callback version)
- kristopolous 7y agoWhy not just let the type system figure it out in this instance?
- tpetry 7y agoBecause php has no function overloading by type system.
- kristopolous 7y agoThe type can trivially be checked inside the function. You don't need type system function overloading
- totony 7y agobut this has runtime cost, where inconsistent order doesn't
- kristopolous 7y agoNot necessarily. Unless someone is intentionally trying to be confusing, the parameter order will be consistent for a specific instantiation. I mean that if it's array,function at line X this time, it will be next time - again, unless you are trying to intentionally break this rule through a coding acrobatics exercise. Since it's now known (with relative confidence), it can be optimized. If someone truly is doing wacky things then we are left exactly where we were beforehand, with a broken system. Most of the time, however, it'd be better