Re: [Discussion] is_string(), string type and objects implementing __toString()

From: Date: Thu, 09 Mar 2017 19:55:46 +0000
Subject: Re: [Discussion] is_string(), string type and objects implementing __toString()
References: 1 2 3 4  Groups: php.internals 
Request: Send a blank email to internals+get-98462@lists.php.net to get a copy of this message
On 3/9/2017 8:51 PM, Rowan Collins wrote: > On 09/03/2017 17:37, Fleshgrinder wrote: >> On 3/9/2017 3:18 AM, Stanislav Malyshev wrote: >> >>> I don't think it's right approach. is_* functions check the current type >>> of the value, not whether it can be converted to another type. If we >>> need ones that express the latter, we should have different functions. >>> >>> Also, as already noted, having __toString doesn't mean it returns >>> something useful. >>> >> This is not true at all: >> >> 1. is_dir >> 2. is_executable >> 3. is_file >> 4. is_finite >> 5. is_infinite >> 6. is_link >> 7. is_nan >> 8. is_readable >> 9. is_resource (checks the resource's type too) >> 10. is_uploaded_file >> 11. is_writable > > I think a good example is "is_callable", which evaluates not the *type* > of the value, but the *possible behaviour*. You could think of > Closure::fromCallable($foo) as "cast $foo to Closure", in which case > is_callable($foo) is "can $foo be cast to Closure?" (at least, in it's > default behaviour). > > This is then much more similar to defining is_stringable($foo) to return > true for everything that can be cast to string. > > Regards, > I also forgot about is_numeric which checks the content of a string. ;) -- Richard "Fleshgrinder" Fussenegger

« previous php.internals (#98462) next »