object 类型参数兼容性问题
在定义接口方法 save 时,你将参数类型指定为 object,但实际实现类中,你使用了一个特定类 AdminRequest 作为参数类型。这导致了类型不兼容错误,提示 “参数必须兼容对象类型”。
解决方案
-
明确指定正确的类型:
由于你明确需要接收 AdminRequest 对象,因此应在接口中直接指定该类型作为参数,而不是使用 “object”。这样,你将确保实现类始终传递正确的类型。 -
使用父类或接口:
由于你有多个 “xxxRequest” 类,并且它们都继承自 Laravel 的 Request,因此可以在接口参数中使用 Request 作为父类或接口类型。这样,任何继承自 Request 的类都可以作为参数传递,满足你的需求。
注意事项
- 使用 PHP 7.2 版本,object 才能作为类型提示合法使用。
- object 是一种特殊类型,不属于任何类层次结构,也不支持 is_a() 检查。
- 协变与逆变原则适用于子类、父类和接口之间的类型提示。
以上就是接口方法参数类型object兼容性问题:如何解决“参数必须兼容对象类型”错误?的详细内容,更多请关注php中文网其它相关文章!