Re: [RFC] Scalar Type Hinting With Casts (re-opening)
| From: | Andrea Faulds | Date: | Tue, 15 Jul 2014 17:32:32 +0000 |
| Subject: | Re: [RFC] Scalar Type Hinting With Casts (re-opening) | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-75553@lists.php.net to get a copy of this message | ||
On 15 Jul 2014, at 18:24, Rowan Collins <rowan.collins@gmail.com> wrote:
> Stas Malyshev wrote (on 15/07/2014):
>> IMO, having consistent rules is much more, orders of magnitude more
>> important than serving any particular use case
>
> We are adding a new feature to a language which is already inconsistent. We can only make it
> consistent with one part of the language by making it inconsistent with another.
>
> If we take consistency as such a priority that we create a feature that is not actually useful,
> we will have wasted our effort, and made the language worse, not better. Saying "who cares if
> its useful, as long as it matches some other part of the language" is a very poor argument IMO.
>
> That's an extreme, and I'm not saying anyone is saying precisely that, but I am
> getting rather weary of the back-and-forth over what is "consistent", rather than thinking
> about what we want to achieve, and what is the best way to achieve that.
I’d argue it’s better to do the right thing here, which is easier, and then do the right thing
in the other place later, which is harder, than it is to do the wrong thing now because the other
place also does the wrong thing. Having saner implicit casting for scalar type hints will be easier
than changing the behaviour of zend_parse_parameters.
>> What you want is strict typing then.
>
> No, I want to introduce the notion of a "lossless cast", allowing things like
> (int)'123' to be valid. This distinction has been explained many times.
>
>> And if() working the same way -
>> after all, if function can be unaware of the flag, if() is definitely
>> unaware of it.
>
> Not necessarily. An if() statement is clearly and unambiguously working with boolean values.
> Anyone looking at if( $foo & BIT_FLAG ) can know, based on basic knowledge of the language, that
> an implicit cast is taking place.
>
> Someone looking at my_super_function( $foo & BIT_FLAG ) cannot know whether that parameter
> is being interpreted as a boolean or is actually being measured against that same BIT_FLAG (or some
> other integer operation) without consulting the source code (or, at least, trusting the
> documentation).
>
>> I am not among them. If you want
>> to enforce code style, we already have tools for that, but I don't think
>> this particular one should be in the language.
>
> The logical conclusion from that is not to have type hints at all. So far, that is in fact the
> only consensus the PHP community has ever reached - not to have scalar type hints. (I don't
> mean that you necessarily hold that position, but it is the logical conclusion of that particular
> line of reasoning.)
>
> Regards,
> Rowan Collins
> --
> [IMSoP]
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
I, myself, generally agree with all this, though I’m not sure quite whether Anthony does at the
moment.
--
Andrea Faulds
http://ajf.me/