PHP is not a strongly typed language to begin with. However, it has an OOP capabilities. You can always use $mixed type in any of your containers, or even declarations.
With that said, Your Containers for Objects will work without trying to rely on C# type List Generic or any array collections of object.
But you can specify the type whenever you want to.
This is only applicable for Php 4, 5 and 7. Somehow, in PHP 6 they undermined the development of OOP and remove some of it. reining PHP 5 as the stable PHP.
Math function has been added in the later versions.
array list ( mixed $var1 [, mixed $... ] )
As you can see in here. You can always make 'mixed' as the type of your Class or Data Type, just like you use var for C#.
However, If you strictly want to use CLASS Generics, you would also need to require the Class before you can use it as a data type.
array list can be foreach looped or any kind of collection method calls.
But using generic
array (['test' => 'test']);
Does not make any big difference.
With the approach that you want, it is just like you, want to implement pragma strict. Being well accustomed C# strongly typed. I don't blame you for trying to find the same approach. It just that, no matter how clean you want your code to be. PHP will always allow different type to be added in the list if not specified.
Cause of PHP is a scripting language, not a compiled Language.