2008/4/18, Lukas Kahwe Smith <[EMAIL PROTECTED]>:
>
> Hello All,
>
> I just want to bring in a different perception on the proposed feature. I
> think people are very focused on what I call "library code". This is the
> kind of code that should in theory be worked on less, than the glue code
> that you write in every project to finish up the applications your customers
> have requested.
>
> IMHO type hinting and more importantly strict type hinting is very focused
> with making the life of library developers easier. They can just easily
> discard anything that doesnt match their expectations 100%. That this is not
> how PHP has traditionally worked has been mentioned quite often in this
> thread. But I want to direct peoples attention to the code that calls
> strictly typed libraries.
>
> Suddenly I need to ensure that all my variables have the proper types. So
> what will people do? They will start forcing type juggeling manually before
> they call the library in question. Since this is the glue code, its the kind
> of code you have to write day in day out. So maybe an "(int)" here or there
> is not so much more code to type, but you can already see that code you safe
> on one end, you have to start adding on the other, the one which you write
> more often. More importantly, in some cases simple type juggeling with
> "(int)" will not be sufficient, you might have to do some minor checks etc.
> In the past library authors did this as part of the code that the strict
> type hinting camp is now hoping to remove. So again more code in my glue
> code.
>
> Furthermore people over estimate the usefulness of automated errors. They
> tend to include very minimal context information. So when in the past people
> had to write out the parameter checking code manually, they had the
> opportunity to very easily add important context information to whatever
> error they raised. This will no longer be the case with strict type hinting.
> There it will be the responsibility for the caller to make sense of the
> error and know whatever context is relevant for this error condition.
>
> I guess the reply I can expect from this mail is that I do not have to use
> it, that I do not have to use libraries that use strict type hinting or that
> good developers will pick and choose when to use strict type hinting. While
> this may be true, we do not live in a perfect world. So again I want to
> remind people that as we develop the language, we need to pick and choose
> what features come in that will ensure that PHP remains at least as
> productive has it has been in the past for its users.
>
> As such I want to again bring up that a loose type hinting with types like
> "scalar" and "numeric" are much less risky, since they are a much wider
> filter. Its quite easy to figure out why a function that is documented to
> not operate on arrays to come back with an error when I pass it an array.
> However it will be a bit confusing to get an error when I pass '1' to a
> method that then comes back to complain I did not pass an integer.
>
> regards,
> Lukas
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
I think that this functionality can work for numeric types like this:

if we have one of the numeric types hinted for function arg then we need to
check if it is_numeric and if it is - we can convert it. If we have a string
witch can't be converted to regular numeric type without loosing information
(strings like "45s", "asdf32325" etc) - rase a recoverable error (or
exception - that way user can catch it and display it's own error text or do
some actions about it).
That way I think we won't lose the flexebility of PHP's dynamic type
conversions but we will make it a little bit more strict on what we are
passing to function (realy, if it is possible that string will be passed to
function where you have to have integer - don't you check it anyway for
correct type and value? Mostly on that check result is an error
triger_error/exit/die/etc.).

Reply via email to