php - PHP 中的协方差 (OOP) - 它是如何工作的

标签 php oop covariance

<分区>

class Param() {
}
class Subparam extends Param {
}

class Base {

  function mymethod(Param a) {
  }

}

class Sub extends Base {

 function mymethod(Subparam a) {
 }

}

在 PHP 中,这会导致警告:Declaration should be compatible with Base->mymethod(a :\Param)

除了仅使用注释之外,我还能做些什么来防止这种情况发生?

最佳答案

class Param() {
}
class Subparam extends Param {
}

class Base {

  function mymethod(a) {
    // Remove the parameter type from the method declaration.
    if (a !instanceof Param) {
      throw new \Exception('Paramater type should be of 'Param.');
    }

}

class Sub extends Base {

 function mymethod(a) {
 }

}

这应该让你接近。

关于php - PHP 中的协方差 (OOP) - 它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950081/

相关文章:

oop - 使用多态性进行表达式评估和树遍历? (阿拉史蒂夫耶格)

c# - 如何使类只允许创建 3 个对象

c# - 同时使用值和引用类型的泛型的协方差解决方法

具有泛型子类化的 Java 自动返回类型协变

php - 具有一些特殊要求的多行排序

php - 有没有关于如何使用 PDO 的好教程?

c# - 人们如何解决子类初始化方法需要不同数量的参数到他们的父类(super class)?

php - Javascript 数组通过 Ajax 传递给 PHP

php - 如何防止 curl_multi_select 在 osx 上挂起?

excel - 使用 Excel 计算协方差矩阵