Hi, John I personally do not care about weak or strong variables at all ... I only want what Arvids suggested last time:
> test(1, 2); // 2; > test("1", 2); // 2 > test("1aaa", 2); // E_NOTICE or E_TYPE and result 2 > test(array(2), 2); // E_RECOVERABLE_ERROR - just like with array type hint now. > > It's really what the most people want. Simple, easy to pick up (object > and array already have this) and is just optional. I count myself as a part of *most people* in this statement ;) I'm also quite fine with the current type-hints as you'd anyways get an error if you try something like this: function foo(SimpleClass $a) { $a->getName(); } foo("Test"); If you now get *method called from an non-object* or a message that you have passed a value that's not compatible with *SimpleClass* ... I'd like to split this discussion in parts: - just type-hint in functions (as we have it with classes and arrays) or bind a variable to a strict type? - should it then also be possible bind variables to a specific class or interface? - should we go for weak or strong types? - the type-hint is also weak in one way because it accepts all that's compatible with the given type. Bye Simon 2012/2/29 John Crenshaw <johncrens...@priacta.com> > I would personally be inclined towards something simpler like E_NOTICE or > E_WARNING, but current type hints all raise E_RECOVERABLE_ERROR. I think we > should be consistent, and the consistency argument may make the difference. > > There may be a strong case for changing the error level on all type hints > to something simpler (or new, like E_TYPE), but I think that might be > better to tackle that in a separate discussion. > > John Crenshaw > Priacta, Inc. > > From: Kris Craig [mailto:kris.cr...@gmail.com] > Sent: Tuesday, February 28, 2012 8:40 PM > To: John Crenshaw > Cc: Rick WIdmer; internals@lists.php.net > Subject: Re: [PHP-DEV] Scalar type hinting > > I wouldn't mind that, though I'm concerned that it may not be sellable > because some people on here have expressed a strong opinion that this > shouldn't throw anything more than a notice or a warning at most, something > that I and others strongly disagree with. The logical approach, to me at > least, is to follow the example of include() and require(); i.e. they're > both identical except that one throws a scary error while the other one is > just a warning. > > I'm fine with just throwing E_RECOVERABLE_ERROR, though I fear that may > alienate too many people for us to be able to get this through. Though > it's possible I might be overestimating that factor. > > --Kris > > On Tue, Feb 28, 2012 at 5:17 PM, John Crenshaw <johncrens...@priacta.com > <mailto:johncrens...@priacta.com>> wrote: > > On Tue, Feb 28, 2012 at 3:03 PM, Rick WIdmer <vch...@developersdesk.com > <mailto:vch...@developersdesk.com>>wrote: > > > > > On 2/28/2012 2:58 PM, Kris Craig wrote: > > > > > > strong int $a = "1"; // Converts to 1. May or may not throw an error > > > (I'm > > >> still on the fence). > > >> > > > > > > It this is an error, it is no longer PHP. > > > > > > > @Rick Though I'm not sure I'd agree with the overly broad "it is no > longer PHP" hyperbole, I think the basic point that it would be a > significant departure from the current model has merit. So ok, you've > convinced me. > That example should not throw any errors. I'm officially no longer on the > fence with that. =) > > > > --Kris > OK, if we're all on the same page there, I think this means that there is > no significant difference between the "strong int" and "weak int" in your > proposal (the only remaining difference being the level of error raised > when it cannot be converted, which IMO is not substantial enough to deserve > a keyword.) I'd prefer to just pick one error level to use > (E_RECOVERABLE_ERROR would be the most consistent) and keep everything > simple. > > John Crenshaw > Priacta, Inc. > >