On Tue, 9 Apr 2019, Nikita Popov wrote: > On Thu, Apr 4, 2019 at 1:16 AM Andrea Faulds <a...@ajf.me> wrote: > > > I'm kinda unsure how to go forward because of these points. I would like > > to see improved comparisons, and I would like to see the end of the > > “non-well-formed” numeric string, and I think this whitespace RFC could > > be helpful to both. But I can't see the future, I don't know whether > > people will vote for removing leading or permitting traiing whitespace > > and whether or not they will be influenced by or this will influence > > opinion on the further improvements. ¯\_(ツ)_/¯ > > > > I'm torn between: > > > > * Vote on allowing trailing whitespace > > * Vote on disallowing leading whitespace > > * Vote on which of those two approaches to go for > > * Trying to bundle everything together and voting on it as a package. > > > > I'm probably thinking too strategically. > > > > Given the response on the mailing list (and also other places like Reddit), > it seems like people feel pretty strongly that it's better to drop support > for leading whitespace than add support for trailing whitespace. If we do > this, I think we should couple this change with the removal of "non > well-formed numeric strings", because they are so closely related (one > change would forbid leading whitespace and the other trailing characters). > > One possible course of action would be: > > a) In PHP 7.4 throw a deprecation warning in is_numeric_string if there is > leading whitespace (always). > b) In PHP 7.4 throw a deprecation warning in is_numeric_string if there are > trailing characters in mode 1 (mode -1 already throws a notice and 0 > already treats as non-numeric). > b) In PHP 8.0 treat leading whitespace as non-numeric (always). > c) In PHP 8.0 treat trailing characters as non-numeric (always), and > remove the non well-formed distinction (mode -1). > > Notably this also affects (int) behavior in that (int) " 42" will be 0 > and (int) "42xyz" will be 0. > > A less aggressive alternative would be: > > a) In PHP 7.4 throw a deprecation warning in is_numeric_string if there is > leading whitespace (unless mode is 1). > b) In PHP 8.0 treat leading whitespace as non-numeric (unless mode is 1). > c) In PHP 8.0 treat leading characters as non-numeric (unless mode is 1). > Remove non well-formed distinction (mode -1). > > This would keep the behavior of (int) as-is and only affect implement > numeric string checks. > > This discussion how mostly been around the implicit cases, what do people > think about the desired behavior of (int)?
I think there should be no difference in behaviour between implicit and explicit cases. cheers, Derick -- https://derickrethans.nl | https://xdebug.org | https://dram.io Like Xdebug? Consider a donation: https://xdebug.org/donate.php, or become my Patron: https://www.patreon.com/derickr twitter: @derickr and @xdebug
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php