On Fri, Jul 18, 2014 at 7:02 AM, Theodore Brown <theodor...@outlook.com> wrote:
>> 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
>

Hi, all

First of all, thanks for all your time, you put into this thread! I
really am looking forward for a way, all can live with, because this
topic has followed the PHP community since the release of PHP 5.1,
since the introduction of type hinting for arrays
(http://php.net/manual/en/language.oop5.typehinting.php).

On an archive for this mailinglist I found threads that are going back
to 2005 (http://marc.info/?l=php-internals&m=112397232722668&w=2) -
Here's a list of all messages found:
http://marc.info/?l=php-internals&s=type+hinting&q=b

I've been one of the most active contributors to a thread back in 2012
- not the one giving most productive feedback, but the one giving the
most feedback ... (I later saw a statistic of who posted the most
mails to the mailinglist within the months of discussion)

What I see, we're again stuck with mainly three different opinions, as
Paul Biggar pointed out in his post - and he tried to find a solution
back then. I would suggest that anyone should read this mail - if you
want, read the thread - I haven't had the time for now..:
http://marc.info/?l=php-internals&m=124653792412529&w=2

In every round we took this topic, there have been new RFCs added ...
I don't know if there will be a solution, and my personal favorite is
the way, proposed in this RFC here. No casting for the values, just
more a validation - a lossy validation.

The main reason for this proposal is, that mostly every input to your
application will be a string. If it now is a file, a value from the
database, the GET and POST parameters, a CURL response - nearly
anything. I don't think it makes sense to first cast them before you
can use them.

I agree, that it feels wrong to have a method, accepting
(string)"123abc" and casting it to (int)123 for internal usage, but it
also feels wrong to not let the input (string)"123" pass as a
parameter to a method accepting integer. This would lead us to casting
(f.e. substr("string", (int)$var)  ), what again would be like accept
anything ($var = "abc").

I also saw some complaining about that older code may will not work
when introducing something here. As of what I think, this should be
implemented as an extension to the language as it is now. Old code
should be able to run as it is. You may will get a problem when your
old code is using a library, that you want to update and the library
is using the new syntax ;)

Thanks for reading.

Bye
Simon

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

Reply via email to