Re: Scalar Type Hinting
| From: | Anthony Ferrara | Date: | Thu, 08 Mar 2012 13:41:41 +0000 |
| Subject: | Re: Scalar Type Hinting | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-58784@lists.php.net to get a copy of this message | ||
Gustavo,
> Not really, that's just a convention that if zpp fails functions return null
> or false immediately (which one is used depends on the extension, current
> weather, etc.). That's because there's a convention that builtin functions
> don't raise exceptions. But nothings stops them from falling back or
> suppressing the warning/notice (and some do, esp. if they support distinct
> sets of arguments).
>
> Some extensions (and constructors even in extensions that use false for
> error) actually force an exception if zpp fails (usually via
> zend_replace_error_handling).
Quite fair...
> But of course this is not an option in user code because:
> 1) you can't change the error handling before parsing the parameters and
> 2) inside the function you can't tell whether some argument parsing error
> occurred.
Which is the point.
> So E_RECOVERABLE_ERROR in the cases where zpp would return FAILURE seems in
> fact the only viable option, even with the disadvantages it has
> (centralization and lack of flexibility).
So, at that point, then it sounds like we have a spec. Functionality
of zpp, with an E_RECOVERABLE_ERROR where zpp would fail. Including
any warnings or notices that zpp would have raised anyway (since
`"1abc" would work when passed to an int, it should still work, notice
intact).
> Still, the fact that 100% consistency is not possible is not a strong
> argument against at least *some* consistency and in favor of inventing new
> rules.
Sure. Makes sense.
I'll work on a proof-of-concept this weekend. That is if nobody else
wants to take it (or beats me to it) :-D.
Thanks,
Anthony