On 20 February 2015 at 15:55, Johannes Schlüter <johan...@schlueters.de> wrote:
> On Fri, 2015-02-20 at 13:54 +0100, Niklas Keller wrote:
>> Hi internals,
>>
>> "In Operator" is now in discussion phase.
>>
>> > This RFC adds a new in operator which simplifies contains checks for 
>> > strings and arrays.
>> > Currently, we have to usein_array($needle, $haystack, true) or 
>> > strpos($haystack, $needle) !== false.
>> > These functions have a inconsistent parameter order, so it's hard to 
>> > remember which is the right one
>> > for each. The in operator makes these checks way more readable. 
>> > Additionally, it also works for Traversable.
>>
>> https://wiki.php.net/rfc/in_operator
>
> | It uses strict comparison (===) for array values / instances of
> | Traversable
>
> This might be nice but is inconsistent with other parts of the language
> like switch statements. I think inconsistency is worse than this
> inconvenience.

I would be in favour of strict comparison. Being consistent with
in_array() sounds great, but the loose comparison makes it difficult
to use in certain use cases. A common usage would be a contains/in
validator, for example, where loose comparisons can pass unwanted
values depending on how it's written. I'm not fumbling in the dark, it
has created a security issue in at least two frameworks.

Since it's a new operator in isolation, tightening such rules would be welcome.

Paddy

--
Pádraic Brady

http://blog.astrumfutura.com
http://www.survivethedeepend.com

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to