当我声明一个方法时,我声明了一个参数的类型:
public function doOnce(CoolParam $param) {...}
但是当我有一个Doctrine ArrayCollection时,我只能检查数组
public function doOMulti(ArrayCollection $params) {...}
现在我想确定,ArrayCollection的所有成员都是CoolParam的实例。因此,我可以循环整个数组并检查$param instanceof CoolParam
。
但是有没有办法在这种情况下使用ArrayCollection方法?就像
一样$params->membersAreInstanceOf('CoolParam');
答案 0 :(得分:1)
一种选择是使用另一个类中的ArrayCollection
强制执行集合中元素的类型。
例如
class UsersCollection
{
private $users;
public function __construct()
{
$this->users = new ArrayCollection();
}
public function addUser(User $user)
{
$this->users->add($user);
}
}
然后您就会知道public function doOMulti(UsersCollection $params) {...}
中的所有元素都是正确的类型。