I know we have that already discussed a lot now, but I’d like to expose my points on the return value here:
I imagine code like (supposing that we ever will have scalar typehints): function acceptsInt (int $i = null) { if ($i === null) { $i = 2 /* default value */; } /* do something with $i */ } When we return false: acceptInt(($tmp = to_int($_GET["userinput"])) === false ? null : $tmp); When we throw an exception: try { acceptInt(to_int($_GET["userinput"])); } catch (CastingException $e) { acceptInt(null); } When we just return null: acceptInt(to_int($_GET["userinput"])); Also, when we want to pass a default value defined outside of the function, it’s a lot easier now with the coalesce operator: acceptInt(to_int($_GET["userinput“]) ?? 2 /* default value */); Also, independently of possible scalar typehints: Generally exceptions are also a bad idea as the casts probably will be used on external input and exceptions are **not** a way to handle malformed user input. Really not. Furthermore, false is a bad idea in the same sense (if we get scalar type hints once), because people then might just catch the EngineException… Also, null means "no value"; that’s exactly what we need. If the to_{type}() functions cannot return a meaningful value, just return "no value", that means null. And not false, which is a real value. That’s why I strongly feel that null is the only true thing to return here. Thanks, Bob > Am 21.10.2014 um 00:57 schrieb Andrea Faulds <a...@ajf.me>: > > Good evening, > > I am presenting a new RFC to add a set of three functions to do validated > casts for scalar types: > > https://wiki.php.net/rfc/safe_cast > > Please read it. > > Thanks! > -- > Andrea Faulds > http://ajf.me/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php