On Tue, 2008-01-08 at 09:41 +0000, Richard Quadling wrote: > On 07/01/2008, Stefan Priebsch <[EMAIL PROTECTED]> wrote: > > Robert Cummings schrieb: > > > The onus should be on consumers of my API to use it properly, not on me > > > to jump through hoops to make sure they gave me the correct data at > > > every step of the way. I stopped holding hands in grade 3 or so. > > > > Still you force any defensive coder to repeat explicit type checks and > > type casts all over whenever one of your API functions is called. > > > > Regards, > > > > Stefan > > > > This argument implies that the coder constantly shifts type on their > variables. > > If I have a counter, I'll use an integer. I'll initialise it to 0. I > __CAN__ use a string of "0", but as soon as I say +1 it is juggled an > integer until some other use juggles it to something else. > > The only time I see auto type juggling useful (for internal data not > user input) is in string concatenation and then it fails for boolean > types (""/"1" rather than "0"/"1" or even better "true"/"false"). But > then, it is only the result of the juggle that is used. The original > variable isn't juggled. > > Type juggling is a great thing, but next to useless if you are a > "defensive coder". > > You know that converting from type a to type b MAY result in data loss > ("1 defensive coder" + 1 = 2, not "2 defensive coder", so you rarely > do it. Instead you will use functions to absolutely confirm the > conversion and check values.
That's part of the reason I did this in the first place, to prevent errors like this that cause data loss. > That's defensive. > > > From what I can tell this is what is being asked for. > > 1 - Scalar type hints act as type jugglers at the interface of the > function/method rather than having type checking code in the > function/method. > > You will still need to have value checks if they are appropriate. > > So, function x(string $s, int $i) will get a string and an integer, no > matter what is sent. > > Thinking about this, simply because we all know PHP __CAN__ type > juggle, there is no need for any errors/warnings/notices on scalar > types. It will be up to the API developer to make sure appropriate > values are supplied (if necessary), so this reduces the type checking. > > > Richard. > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php