implementing an array of objects can be tricky in PHP since it does not support generics,

there are three solutions that I can see so far

  • one is to implement ArrayObject class to your type for example
<?php
 
class UserCollection extends ArrayObject {
// same as push
	public function append(User $user): void()
	{
		///
		parent::append($user);
	}
}
 
  • using collection package by ramsy which somehow has workaround to implement generics