Le Wed Feb 18 2015 at 19:10:08, François Laupretre <franc...@php.net> a
écrit :

> > De : Patrick ALLAERT [mailto:patrickalla...@php.net]
> >
> > The biggest advantage, IMHO, is that you get the exact same result
> whether
> > you do:
> >
> >     foo((int) $value);
> >
> > or:
> >
> >     foo($value);
> >
> > ... whatever the mode you are in.
>
> Wrong. Parameter parsing rules are much more restrictive than casting
> rules.
>
> Only 'foo((int)'orange')' would (erroneously) succeed.
>

Francois, I'm very aware of the distinction between cast mechanism and ZPP,
but I obviously haven't been clear about the fact that the
(conversion|coercion|type juggling|...) reporting configuration I proposed
would have to be used in ZPP *AND* casting mechanism (and anywhere else
where some conversion applies).

With:

    $value = "foo";
    foo((int) $value);

it is: "(int) $value" that would generate a warning/error depending on the
reporting, not while parsing the parameter of function foo(), which would
receive an int (0) in this precise case.

And this would address the cases:

http://example.org/foo.php?id=42
http://example.org/foo.php?id=bar

foo.php:
    <?php
    fetchById(int $id) {
        // ...
    }
    fetchById($_GET["id"]);

even if $_GET["id"] is replaced by (int) $_GET["id"];

Cheers,
Patrick

Reply via email to