Guys. Maybe don't do that? Use strict typing and the splat/spread operator, as shown here, so you can add or more values, and you get type checking exceptions for free:
I've also seen a work in progress around built-ins collections : php.net/manual/fr/class.ds-collect..., might be the next step over Sets, Maps and others useful collections like the one Python provide.
I've seen it also, but it is a pecl extension (working with PHP 7). I doubt it will become core soon.
Too bad, I feel PHP diserve those built-ins, kind of like they are doing for strictly typed variables...
As you mentioned arrays are very flexible and offer freedom for developers. It's what makes them good but also very annoying to consume. Personally i feel that only arrays containing a single type is acceptable as return value (see my post on the subject). Iterators are better in most cases.
To be honest i really don't think it's important to implement ArrayAccess on collections (or extend ArrayObject). It's not really bad... but somehow using that bracket syntax feels awkward.
Lack of collections is a pain in the ass in PHP. There is really no convenient way to achieve type safety for collections at the moment (at least one i know of). I create collections all the time by just implementing IteratorAggregate but this means that i do have to create a new class each time i want type safety for a collection.
I really hope we'll see generics sooner rather than later. Also sets and maps.
Guys, check out a collection package I have been working on since may 2018
It is fully documented and it supports strict typing. It has a lot of the laravel collection features and more.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.