Re: make casts more strict in PHP 7

From: Date: Wed, 10 Sep 2014 18:27:39 +0000
Subject: Re: make casts more strict in PHP 7
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-77139@lists.php.net to get a copy of this message
On 10/09/14 19:41, Rowan Collins wrote: > Andrea Faulds wrote (on 09/09/2014): >> If people want strict casting, we can add new functions or operators >> for that specifically. > > I think this came up during the previous discussion, and I actually > think it would be quite nice to have some functions both to perform a > "strict"/"safe" cast (and raise E_CATCHABLE_ERROR or perhaps throw > TypeCastException), and to check if a variable *can* be thus cast > (validating integers is unnecessarily complicated at the moment). > > Either: > mixed safe_cast(mixed $var, string $type) > boolean can_safe_cast(mixed $var, string $type) > e.g. > if ( can_safe_cast($_GET['i'], 'int') ) > $i = safe_cast($_GET['i'], 'int'); > > Or, to avoid representing the type with a string arg, a whole set of > functions: > int safe_cast_int(mixed $var) > boolean can_safe_cast_int(mixed $var) > float safe_cast_float(mixed $var) > boolean can_safe_cast_float(mixed $var) > etc > > The first avoids creating so many new functions, but perhaps some > constants should be defined for the argument, based on the values > returned by gettype(): > > PHP_TYPE_INT = "integer" > PHP_TYPE_FLOAT = "double" > PHP_TYPE_STRING = "string" > PHP_TYPE_ARRAY = "array" > PHP_TYPE_OBJECT = "object" > PHP_TYPE_RESOURCE = "resource" > PHP_TYPE_NULL = "NULL" > > > Of course, we'd then need to agree exactly which casts are considered > "safe"... > .oO(ext/filter) ? -- Regards, Mike

« previous php.internals (#77139) next »