Err typo correction: In my "what if" scenario, I meant to say, "what if dynamic function A makes a call to *static* function B".
--Kris 2012/2/23 Kris Craig <kris.cr...@gmail.com> > 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? > > 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. > > 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 know this would be potentially confusing to people who are used to the > existing language structure, but it's also worth noting that PHP has > already changed quite a bit over the years and we've all managed to adapt. > I'm thinking this would be perfect for PHP 6, since it would not be at all > unreasonable to assume that there would be significant language changes > that might require a slight learning curve at first, just as PHP 4 and 5 > did. > > This is perhaps the most common complaint I hear about PHP. There are > many programmers out there who think we're out of our minds (or just plain > lazy) for not acting on this. I'm not one of them, mind you, but I can > certainly see why they'd think that looking from the outside. I think it > would be really awesome if we decided to finally tackle this head-on, > despite the obvious discomfort that it would bring in the short-term; > though I think much of that could be mitigated if we simply targetted this > for PHP 6. > > --Kris > > > > 2012/2/23 Ángel González <keis...@gmail.com> > >> On 23/02/12 23:49, Kris Craig wrote: >> > Yeah I agree, that was one of the things I listed under >> > "disadvantages" lol. >> > >> > I guess my question is: Does this constitute a prohibitive problem, >> > or is it something that we can stomach? >> > >> > I mean, if you think about it, that's really what we're talking about >> > anyway, right? After all, when you're writing any application, you're >> > either going to be writing it with strict typing or you're going to be >> > writing it with dynamic typing. The only difference here is that >> > coders with either preference will both find PHP accommodating to >> > their style. >> > >> > >> > Similarly, a somewhat weaker argument could be made that, in PHP 5, >> > you're either coding for procedural design or for OO design >> > (technically you could do both, but I wouldn't wanna touch that >> > codebase with a ten foot poll lol). The only difference here is that >> > there would be a config setting to tell the interpreter which is which. >> > >> > --Kris >> I think you would get developers coding for strict, and hostings set to >> weak. Makes more sense to have it as a per file / per function >> attribute, so the author can choose if they want the values passed to it >> to be coerced or act as if they were doing a manual check and throwing >> an exception. >> >> >