Re: [RFC] Strict type hints (parameter and return value)

From: 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

« previous php.internals (#37855) next »