On 14 Oct 2014, at 21:47, Stas Malyshev <smalys...@sugarcrm.com> wrote:

>> You throw an error. Just as plenty of functions already can’t handle
>> ridiculously large integer arguments.
> 
> The problem is, if you function can handle the int range and you checked
> for is_int() and everything worked fine - now it's broken because
> is_int() no longer implies fixed range and there's no way to check if
> you're dealing with fixed-range number or infinite-range number.

Yes, but you *can* check if the function errors. I don’t really think this is a 
massive problem. People will probably not realistically expect that all 
functions can accept really large numbers, whether that range cuts off at 
2**64-1 or something more arbitrary. It’s a problem if abs() or sign() don’t 
work for bigints. It isn’t if str_repeat() doesn’t, because a similarly-sized 
non-bigint would error too.

> 
>> No, it does: There are now integers, and objects that represent large
>> integers, which behave differently.
> 
> IS_INT and IS_BIGINT would necessarily behave differently too - since
> some functions may support both and some only integers.

All functions would “support” both for integer arguments. But some might choose 
to reject bigints which are larger than the internal integer type the function 
uses… much like a function written for PHP currently might reject longs larger 
than the internal integer type the function uses.

> Again, no change
> here.

The point is the degree to which they can act the same. Objects can only go so 
far.
--
Andrea Faulds
http://ajf.me/





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

Reply via email to