带有子对象参数的 add 方法与调用父类的实现不匹配。有没有解决的办法?
除非有更好的方法,否则我的计划是为 Collections 创建一个界面,如下所示:
interface Collection {
public function add( ValueObjects $obj ) : bool;
}
abstract class ValueObjects {}
class User extends ValueObjects {
}
然后我在 User 值对象的具体集合上实现 Collection 接口。
class UserCollection implements Collection {
public function add( User $user ) : bool
{
return true;
}
}
这显然会引发一个错误,即Declaration should be compatible with Collection. 有没有办法实现相同的结果以允许签名中的子对象?我尝试了抽象类,但没有结果。
如果我不必扩展抽象的 ValueObjects 类会更好。
感谢您分享您的知识 SO 社区。
PS...回顾了这个问题,装饰器和组合模式。我要么错过了,要么我的问题有点不同。
缥缈止盈
温温酱