> There even was an RFC in voting which Joe implemented and it addresses nearly 
> what is discussed it this thread https://wiki.php.net/rfc/arrayof

The link above has broken page links to the mailing list. I’ve found the 
externals.io <http://externals.io/> history and have given it a read:

https://externals.io/message/108175
Typed array properties V2
externals.io
https://externals.io/message/71143#71191
Introducing "Array Of" RFC
externals.io


It seems like everyone always gets really hung up on generics! That or how to 
syntactically implement this.
Again, I think this issues is not adding generics, but again understanding what 
we’d pass to Array<T>.
How do we model complex arrays:

interface iArrayA ['a' => string ]
interface iArrayB extends iArrayA ['b' => string, 'c' => ?string, ‘d’ =>  
SomeClass, ‘e’=>  iArrayA, ‘f’ => mixed ]

class D {
        public ?iArrayB $exampleA;      // Array<iArrayA>
        public ?iArrayB[] $exampleB;    // Array<iArrayA>[]
}


Since we do have SplFixedArray which is essentially SplFixedArray<int>, which 
is a sequence, already built in I’m 
thinking we can focus on SplObjectStorage which could easily be made 
SplObjectStorage<string>, for example.
I’m not saying custom data types wouldn’t be a good thing… But maybe we can 
co-exist

class D {
        public ?Dict<iArrayB> $exampleA;        
}


Sorry for continuously enterchanging implements with extends, it absolutely 
supposed to be extends!


If someone has an opinions/considerations on wether to extend the current array 
implemention with metadata or creating a 
dedicated structure via a new class `SplTypeDefinedArray` that would be 
helpful. The posed implementation reads as a 
static cast, but it doesnt have to be implemented as such. 

Best, 
Richard Miles





Reply via email to