On 2010-05-27, at 8:14 PM, Zeev Suraski wrote: > At 13:59 27/05/2010, Ilia Alshanetsky wrote: >> Zeev, >> >> Auto-conversion does not validate input to the function/method, it merely >> obfuscates the "wrong" input by converting it to desired type resulting in a >> potentially un-expected value. I must say I am completely against the >> auto-conversion hint idea. > > All of PHP is built on that kind of conversion. See Brian Moon's email for a > detailed instructions. > BTW - even if strict type checking was implemented, do you truly think people > won't simply cast their inputs to make PHP shutup about "42" not being a > valid int? Let me assure you, they would. You'd gain nothing - as a matter > of fact you'd lose out a bit since "abc" strings or arrays will happily cast > into (int), while with our proposed solution - they won't.
Is a 'scalar' typehint still being considered? It doesn't seem to suffer from the conversion vs. typechecking argument. As far as this discussion goes, I would want to add the following: function f(array $a) { } f(1234); f(new StdClass); Currently both throw: "Catchable fatal error: Argument 1 passed to f() must be an array, integer given" IMHO it would be inconsistent with the language to let an 'int' typehint behave in any way different. The way I see it, one end of the discussion proposes: function f(int $i) { } as an alternative to: function f($i) { $i = (int)$i; } While the other end as an alternative to: function f($i) { if (!is_int($i)) trigger_error(..etc..); } The first mainly just saves a few characters, (or introduces a whole new type conversion table), while the second provides * a consistent way to communicate incorrectly typed arguments. * strict argument passing, making it easier to spot mistakes earlier in the development process. While you can disagree the world needs strict typing in PHP, I find it hard to believe the 'conversion syntax sugar' is really considered. Evert P.S.: The last thing I want is add more noise to the discussion. Consider emailing me off-list if you want to respond to this. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php