> From: Andrea Faulds [mailto:a...@ajf.me] > Sent: Thursday, February 12, 2015 1:45 PM > To: Pavel Kouřil > Cc: guilhermebla...@gmail.com; Zeev Suraski; Rasmus Lerdorf; PHP > Internals > Subject: Re: [PHP-DEV] [VOTE] Scalar Type Hints > > Hi, > > > On 12 Feb 2015, at 07:05, Pavel Kouřil <pajou...@gmail.com> wrote: > > > > On Thu, Feb 12, 2015 at 1:13 AM, Andrea Faulds <a...@ajf.me> wrote: > >> > >> A number (or numeric, or num, or some other name) type hint is > something I plan to propose in a future, follow-up RFC. > >> > > > > wouldn't polymorphism (via method overloading) solve the use cases and > > be much more useful in the long run than introducing a something > > that's not a type into type hints? > > PHP already has polymorphism through its dynamic typing. I don’t see > method overloading happening any time soon. We have optional parameters > and dynamic typing, which all but eliminate the main needs for > overloading. > We’re a weakly-typed language, so overloading on scalar types might cause > unpredictable behaviour (with strict types you’d get an error sometimes, > and > that’s fine - but calling an entirely different function? Now that’s > different.) > There’s also the question of how, or if at all, method overloading could > interact with our optional parameters and dynamic typing. Finally, > overloading can lead to really poor API design: it’s not that uncommon in > some languages to see 20 different function definitions with overlapping > and > non-comprehensive subsets of a method’s behaviour, that are distinguished > only by parameter types. It’s one of my least favourite Java/C#/C++ > features > for that reason. > > In response to saying numbers are not a type: well, they are more of an > abstract type which integer and float subclass. We already have internal > facilities for converting to and from “numbers” alongside integers and > floats, > I don’t see why we can’t expose this to users.
+1 Zeev -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php