Hi Mike,
> On 15 Jan 2015, at 17:07, Mike Willbanks <[email protected]> wrote:
>
> I may not have described this clearly. If I make a library with a method
> that states an int, the declarative syntax now makes me have to take both due
> to your earlier comment on that userland would define the condition. This
> means that if I declared handling inside my library to be strict but the
> caller was in weak, I would need to handle that condition.
How, exactly, would you need to handle that condition? You don’t need to do
anything yourself.
As the RFC itself says:
> In both approaches, the function will always get exactly the argument type it
> asks for. In the case of strict type-checking, this is done by rejecting
> incorrectly-typed values. In the case of weak type-checking, this is done by
> rejecting some values, and converting others. Therefore, the following code
> will always work, regardless of mode:
> function foobar(int $i) {
> if (!is_int($i)) {
> throw new Exception("Not an integer."); // this will never happen
> }
> }
No matter whether foobar() is called from strictly type-checked or weakly
type-checked code, the $i argument you get will always, without fail, be an
integer. Thus, I do not see how you "would need to handle that condition”.
> Now from that perspective I cannot rely that I am in strict and would have
> to handle the default weak even although I declared in my class that i wanted
> strict mode which only affected the code inside of that file. That's
> ultimately what I am saying and why I am stating it would have to handle both
> conditions. In reality, you'd always act as if you were in a weak mode
> supporting that case.
I… really don’t understand, I’m sorry. Are you complaining that if a caller
uses the weak mode, they are not bound by strict types? Why do you want to
affect the code of the caller?
--
Andrea Faulds
http://ajf.me/
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php