Re: Scalar Type Hints v0.4
| From: | Nikita Popov | Date: | Wed, 18 Feb 2015 01:05:49 +0000 |
| Subject: | Re: Scalar Type Hints v0.4 | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-83017@lists.php.net to get a copy of this message | ||
On Wed, Feb 18, 2015 at 1:53 AM, Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
> On 02/17/2015 04:35 PM, Nikita Popov wrote:
> > I don't buy into Rasmus arguments about internal functions. They concern
> > one particular edge case (int->float coercion) and I doubt they have much
> > relevance if applied to codebases with pervasive use of typehints (where
> > you can be reasonably sure of the types of your variables). Even if, for
> > the sake of argument, we acknowledge the concern as valid we should be
> > discussing that particular case (int->float coercion) rather than
> dropping
> > the strict typing for internal functions altogether.
>
> int->float is actually secondary to "123"->int. And while they may be
> edge-cases there are enough of them that we would be pushing people
> towards casting by default which should be a last-resort thing, not the
> first thing you do.
>
The inability to implicitly cast "123" to int is pretty much the KEY
distinction between weak and strict scalar typehints (those pesky
value-dependent type checks). If the strict typing mode doesn't offer this,
what's the point at all?
This is exactly what I fear will happen with an arginfo based approach. If
even fundamental aspects like the "123" vs 123 (or true vs 1) distinction
are suppressed for internal functions, this isn't a strict typing mode,
it's just a weak typing mode with slightly different rules.
Nikita