Could you elaborate on that a little? I.e. "as an interface for the call". I'm not sure what you mean by that. If you could provide a quick example, that would be awesome! =)
--Kris 2012/2/24 Ángel González <keis...@gmail.com> > On 24/02/12 00:36, Kris Craig wrote: > > Hmm that's a fascinating idea! So, and please correct me if I'm > > wrong, you're saying that it might be a better approach to determine > > strict vs. dynamic typing on a per file or function basis instead of > > on a per stack basis? In other words, blah.php could contain two > > functions, one using strict typing and the other using traditional > > dynamic typing? > Yes. Two functions in the same file with different conventions may be a > strange use case, I'd expect differences to come from eg. using two > libraries, each with different typing. > > > > Theoretically, I think that approach could work. Perhaps we'd have it > > specified in the function declaration itself; i.e. "function whatever( > > $text, $number )" would be a traditional, dynamically-typed PHP > > function, whereas "strict function whatever( string $text, int $number > > )" would use strict typing. > I'm not keen with that syntax, but that could be discussed. I remember > something similar was already mentioned in another types thread, with > ideasl like string! or string? to mark the types as strict or weak. > > > > The obvious question then would be, what if dynamic function A makes a > > call to dynamic function B, passing to it a dynamically-typed > > variable? There are three viable approaches that come to mind: This > > count not be allowed; this could be allowed but only if the variables > > being passed to function B are cast first (i.e. B( (string) $text, > > (int) $number );); or, this could be allowed without casting, in which > > case PHP would attempt to pass the variable and then throw an > > exception if it cannot be parsed as the required type. Personally, my > > vote would be for Option 2. > I was envisioning it just as an interface for the call. Thus, if funtion > A used strict or dynamic types would be irrelevant. You seem to be > bringing up another option however, which is that funcion A could > specify the behavior on functions it calls. > It can look appealing, but I don't think that's desirable. After all, > it's the callee interface what is important, not the kind of caller (you > could have a setting to force an stricter behavior, but that seems more > appropiate for an extension, like xdebug scream option). > >