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

Reply via email to