Hello all

It's a much-requested feature for years and years. My first thought was "we 
need generics, not this" but than I took 5 minutes to actually think about it. 
While the same, and much more, can be achieved with generics, it's a difficult 
feature to implement. There have been several RFCs for generics in the past, 
which failed. I know Levi Morisson was, at one point, looking at adding support 
for generics only in traits, because it's difficult to add them in other places.

While I still think generics would be a great feature, I now also believe it's 
worth looking at an "array of" type as something standalone. I've got no clue 
about the technical implications, but maybe suprting "array of" syntax is a lot 
more easy than full blown generics? Looking at my day to day work with PHP, 
I'dsay "array of" types would solve ~80% of my problems with PHP's current type 
system, and I figure there are lots of developers in a similar situation. If I 
remember correct from my college days, Java also supports both styles: Int[] 
and ArrayList<Int>.

All that to say that maybe it's worth the effort looking at "array of" types as 
something different than generics?

Kind regards
Brent

> On 17 Jan 2020, at 08:50, Aran Reeks <cdtre...@gmail.com> wrote:
> 
> Hi Internals,
> 
> I'd like to kick off a conversation to capture everyone else's thoughts on
> tweaking / improving typed properties for arrays (for a PHP 8.x release).
> 
> With all the work done lately to greatly improve the type support in PHP
> (which is amazing by the way), I'm finding for the most part, I'm no longer
> needing to Docblock as much of my code which is lovely.
> 
> That said, there's a common use case that keeps me going back to them which
> I think would be a good thing for PHP to try and solve as a language
> feature - better typing of arrays to type their properties.
> 
> IDEs like PHPStorm handle this structure already hence sticking to that as
> a starting point...
> 
> @returns []int
> 
> This would designate the return of an array where all its keys are that of
> the int type, but it works for any type.
> 
> With that in mind, it might also make sense to allow a shorthand array
> alias for array types anyway - array -> [].
> 
> To use actual PHP examples, this would mean the following would be
> supported:
> 
> // Typed array properties ...values would follow any existing PHO type
> function returnsIntArray(): []int;
> function returnsClassArray(): []Class;
> 
> // The same outcome
> function returnsArray(): array;
> function returnsArray(): [];
> 
> I welcome all your thoughts on this proposal.
> 
> Many thanks,
> Aran

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

Reply via email to