Re: [RFC] Stricter type-checks for arithmetic/bitwise operators

From: Date: Thu, 02 Apr 2020 08:35:28 +0000
Subject: Re: [RFC] Stricter type-checks for arithmetic/bitwise operators
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-109503@lists.php.net to get a copy of this message
On 02.04.2020 at 10:14, Nikita Popov wrote: > I would like to propose making the use of arithmetic/bitwise operators on > arrays, resources and (non-overloaded) objects a TypeError exception: > > https://wiki.php.net/rfc/arithmetic_operator_type_checks > > This is inspired by some of the recent discussions, in particular the > operator overloading RFC (where the fact that operations on non-overloaded > objects still succeed with just a notice was criticized) and the > increment/decrement RFC, which handles the array case of this proposal for > inc/dec only. > > I think as-is, this RFC should be completely uncontroversial. However, > there is an open question on whether we want to make this slightly more > strict, in order to align the semantics with the rules for weak parameter > type checks for ints/floats. > > If we do that, then this RFC could be a stepping stone towards making > "implicit" internal casts use the (weak) parameter type checking semantics > more generally, which I think would be a good idea. The current explicit > cast semantics we use everywhere are too forgiving for most circumstances > (e.g. an array is almost always not a reasonable input where an integer is > expected). Thanks! Generally I like that very much. I'm not quite sure, though, what to do with resource to int conversions. These are documented to be valid[1], and are sometimes deliberately used[2], and as such it might be reasonable not to throw on these conversions (maybe even change the current behavior of the ~ operator). After all, I hope we will be able to port all resources to objects sometime, and till then we could stick with more lax semantics. [1] <https://www.php.net/manual/en/language.types.integer.php> [2] <https://www.php.net/manual/en/function.ssh2-sftp.php#refsect1-function.ssh2-sftp-examples> -- Christoph M. Becker

« previous php.internals (#109503) next »