> Since I am very much in favour of scalar type hints, I've updated the
> patch to master and made some minor improvements, and I am re-opening
> the RFC with the intent to try and get it into PHP 5.7.

First of all, this is my first reply on PHP Internals so I hope I am doing it 
right. :)

Thank you very much Andrea for reviving this RFC - I'm really looking forward 
to using 
something like this in the next version of PHP to more easily define interfaces 
and 
catch unintended errors in my code.

However, something I feel it is important to consider is not just how scalar 
type 
annotations fit into the history of PHP, but how they fit with the way type 
annotations 
are currently used and where the language is going in the future.

A recurring comment I've heard in the discussion for this RFC is that strict 
type hints
aren't "the PHP way." However, current type hints for classes, arrays, and 
callables 
work exactly in this way - they do not allow nulls, no casting is performed, 
and an 
invalid type results in a fatal error. If scalar annotations are introduced, 
many PHP 
developers (myself included) would naturally expect them to behave in the same 
way.

Another concern I have is in regard to the future. I'm looking forward to the 
possibility of specifying nullable types in a future version of PHP (see Levi 
Morrison's "Declaring Nullable Types" RFC: 
http://wiki.php.net/rfc/nullable_typehints). If the 
nullable types RFC is accepted, it would be highly disconcerting if scalar type 
annotations allowed null values regardless of whether a nullable marker is 
specified.

I don't think that optional strict type annotations will take away from PHP's 
dynamic
nature - they will instead be a valuable feature used in places where it is 
necessary
to strictly validate a parameter's type - this is especially important to 
ensuring
stability and accuracy in the large PHP applications it is my job to maintain.

The RFC has already been updated to make boolean type annotations strict. 
Doesn't it 
make sense to treat the other scalar types in the same way? Perhaps a future 
RFC could
propose a second (also optional) syntax to specify type annotations which 
perform casts.
However, only having cast-based annotations for scalar types would be a 
mistake, IMHO.

--

Theodore Brown

A PHP developer interested in the language's future
                                          
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to