> -----Original Message-----
> From: Pádraic Brady [mailto:padraic.br...@gmail.com]
> Sent: Saturday, February 21, 2015 9:56 PM
> To: Zeev Suraski
> Cc: Anthony Ferrara; PHP internals
> Subject: Re: [PHP-DEV] Coercive Scalar Type Hints RFC
>
>
> The sentence stresses garbage in too much to read as accurate. To clarify,
> there is a) garbage in due to weak coercion and b) a function being called
> with a string when the typehint says int. Both are separate concerns
> around
> error detection. Stricter coercion can enable only one of these two, for
> example. That's better than neither, of course! The coercion rules were
> stricter than I expected based on previous emails. Stressing one too much
> might suggest to a reader that the second concern does not exist.

As I told Anthony, based on what I saw on the list, the former appeared to
be a much more widely-held concern than the latter.

> Other pedantic comment: "numerous" is probably too strong a word there.
> The advantages may vary by person, but usually fit within basic
> five-finger
> math. It would be more important to enumerate them rather than selecting
> one as primary.

Thanks, changed to 'several'.  Double thanks, as I always thought 'Numerous'
was more or less equivalent to 'Several', and you made me look it up :)


> On the RFC rules themselves, a few comments:
>
> 1. Happy to see leading/trailing spaces excluded.

Happy to see you happy!

> 2. Rules don't make mention of leading zeroes, e.g. 0003 3. "1E07" might
> be
> construed as overly generous assuming we are excluding stringy integers
> like
> hex, oct and binary 4. I'm assuming the stringy ints are rejected?

It's up for discussion.  I personally don't have very strong feelings on how
we deal with these cases, as the main thing I care about is for the common
cases to work.  That said, if it was entirely up to me, I'd accept "0003"
but not  "1E07" - as the latter is considered floating point:
$x = "1e7";
print gettype($x+0);  // would print double

But if rejecting leading zeros is what's needed to get a lot more people to
support it, I can live with that.

> 5. Is ".32" coerced to float or only "0.32"? Merely for clarification.

With the same disclaimer as the one for the previous answer, I'd go with
accepting ".32" in the same way is_numeric() accepts it.

> 7. In string to float, only capital E or also small e?

I think both, same is_numeric() rationale - same disclaimer.

> 8. I'll never stop call them "stringy" ints.

I can live with that :)

Thanks for the feedback!

Zeev

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to