Hi Mike, > On 15 Jan 2015, at 17:07, Mike Willbanks <pen...@gmail.com> 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