2011/6/8 Johannes Schlüter <johan...@schlueters.de>:
> On Wed, 2011-06-08 at 10:38 +0200, Hannes Magnusson wrote:
>> 2011/6/8 Johannes Schlüter <johan...@schlueters.de>:
>> > On Tue, 2011-06-07 at 12:12 -0700, Stas Malyshev wrote:
>> >> Hi!
>> >>
>> >> > https://wiki.php.net/rfc/callable
>> >>
>> >> It is good there's an RFC. However it seems to lack code examples. I
>> >> understand it may be obvious to the proposers how it looks like, but
>> >> it'd be nice to have the actual example there as it is done nearly
>> >> everywhere else.
>> >
>> > The RFC is missing information about what happens in codebases which
>> > already have a "callable" type declared. Will that be prevented or will
>> > they hit a runtime error? ("callable expected, callable type found")
>>
>> You mean an interface/class with that name?
>> The error would be 'expected instanceof callable, string/array/closure 
>> recieved.
>>
>> gettype("strpos") will still return a string, not callable.
>>
>> A callable wouldn't be fully featured type.
>
> Which means that
>   class callable { }

No. 'callable' is a parser token.



>> > What about default values? Will
>> >    function foo(callback $cb = 'strpos') { }
>> > be valid?
>>
>> No default values, other then NULL allowed.
>> Otherwise we would need to support array("classname", "methodname")
>> too, and then people would want default array values for array
>> typehinting etc etc etc.
>
> Ok. I assume NULL as default value would be allowed, though. This would
> be consistent for the language and allow such things:
>
> function foo(callback $cb = NULL) {
>    if (!$cb) {
>        $cb = function() { /* .. default implementation */
>    }
>    ....
> }

Etienne pointed out that default values for arrays can actually contain values..
I actually had no idea.

I suppose we then need to support default values for an array callable.

But yes, a callable can have the default value of null, following the
rules of class hinting.


-Hannes

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

Reply via email to