Re: [Initial Feedback] Typed Arrays
> We've done some initial work related to this as part of PHP Foundation work:
> <https://github.com/derickr/php-src/tree/collections/Zend/tests/collection>
After reviewing the PR I don't think this accurately captures what we're attempting to
do/discuss.
Are there other branches you could share? You’ve posed a lot of new syntax. I have questions.
collection(Dict) Articles<string => Article> {}
The code above is limiting compared to the posed syntax in this thread. Since your just working on
providing a specific datatype with a custom syntax. What am I supposed to be able todo inside the
{}? Why not?
collection(Dict<Article>) Articles {}
or just
Dict<Article> Articles {}
Seq<Article> Articles {}
and then there's the completely new syntax? Am I supposed to be able to add methods in this
block?
class Articles extends Dict<Article> {}
If I'm not then it should read more like the following:
$a = (Dict<Article>) [];
____________________________________________________________
But this all feels off-topic. Because, we need to get Typed Array syntax!
interface iArrayA ['a' => string ]
interface iArrayB implements iArrayA ['b' => string, 'c' => ?string ]
$array = iArrayA [
‘a’ => ‘hello'
];
// reads the same as a typecast
$array = (iArrayA &| iArrayB) [
‘a’ => ‘hello'
];
// It’s essentially like a typecast, which should probably be allowed. If the set of possible
values needs to increase, a typecast would do it.
class A {
public iArrayB $array = [
‘a’ => ‘hello’,
‘b’ => ‘world'
];
}
If generics and the is operator get passed then one could in theory do.
class A <T is iArrayA>{
public T $array = [
‘a’ => ‘hello’
];
}
$a = new A<iArrayB>;
Best,
Richard Miles
Thread (39 messages)