PHP中如何根据子类实例化抽象类?

image.png

CreateUploadVideoRequest 类继承了一个抽象类RpcAcsRequest, 这个抽象类RpcAcsRequest又继承了AcsRequest这个抽象类, 我现在实例化CreateUploadVideoRequest这个子类, 如何让实例化的类型成为他的父类的父类的类型啊?(即实例化CreateUploadVideoRequest类, 要求得到AcsRequest类型的实例对象)

求大佬解答!!!跪求!!!

阅读 1.9k
1 个回答
class MyClass {}
class MyClassChild extend MyClass{}

PHP 不能像 JAVA 那样使用 (MyClass) new MyClassChild() 的形式来强制转换一个类的类型。

但是你如果作为参数传递,如果如果你的方法需要传递一个 MyClass 的类型的参数时,你传入一个 MyClassChild 也是可以的。

而这里的错误只是告诉你, DefaultAcsClient::buildApiException 的第三个参数,必须实现 AcsRequest , 而你给定的 CreateUploadVideoRequest 并没有实现这个 AcsRequest

如果你上面提供的继承链没有错,那你的代码就应该是可以正常工作的。

你可以用 is_a(AcsRequest::class, CreateUploadVideoRequest::class, true) 来检查。或者使用 instanceof

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题