Re: [RFC] Strict type hints (parameter and return value)
| From: | Marcus Boerger | Date: | Sun, 25 May 2008 08:37:52 +0000 |
| Subject: | Re: [RFC] Strict type hints (parameter and return value) | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-37855@lists.php.net to get a copy of this message | ||
Hello Stanislav,
Thursday, April 17, 2008, 6:57:12 PM, you wrote:
> Hi!
>> So:
>> function foo($var) { if(!is_int($var)) { throw new exception('not int'); }}
> What's the use of such code? If $var is '1' and not 1, what's the use of
as this seems to be your only argument throughout the discussion, I
suggest we implement is_numeric() and alike or allow a second parameter
that to 'is_*($vaue, $strict=true)' that allows to switch to non strict
mocde. We then could easily allow 'numeric' as another type hint. Or in
other words I see this as a completely separate discussion. There are
two discussions:
a) do we want native type hints
b) do we want an easy ability to deal with compatible types in type hinting
marcus
> throwing an exception and having to handle it later (basically by
> failing the task, since you don't know how to do foo() now) - instead of
> just doing with that 1 what was intended for? There's no any difference
> between 1 and '1' that can be important to anybody. Only difference is
> the way it is represented in underlying bits in zvals, about which
> nobody should ever care. That's like making function that would accept
> only arguments that has 3'rd bit of pointer set to 1 and 5th bit set to
> 0, and reject all others. No sane application should ever behave this
> way. Writing such function is just plain wrong, it replaces the
> substance of programming with nitpicking over the details that are not
> important. Whole phenomenon of dynamic languages has grown on the
> principle of liberating people from caring for bits and concentrate on
> substance, and now you try to drag the bits back in.
>> which is called like this in both cases, maybe with a try catch etc etc:
>> foo((int) $baz['bar']);
> So every time you call foo you need try/catch? And that's supposed to be
> _good_?
> --
> Stanislav Malyshev, Zend Software Architect
> stas@zend.com http://www.zend.com/
> (408)253-8829 MSN: stas@zend.com
Best regards,
Marcus