6

我可以覆盖子类中的 PHP 方法并更改签名中的参数,如下所示。

class theParent {
  function myMethod($param1) {
    // code here
  }
}

class theChild extends theParent {
  function myMethod($param1, $param2) {
    // code here
  }
}

我对此进行了测试,它工作正常并且不会引发任何错误。我的问题是,这是不好的形式吗?还是 OOP 的基本原则?

如果父方法被声明为抽象,则子签名不能偏离。如果您需要强制执行接口的该方面,大概这是使用的机制?

4

3 回答 3

3

通过不匹配该方法的父类的参数数量,您将抛出严格标准的错误消息。

更多信息在这里...

为什么覆盖方法参数违反了 PHP 中的严格标准?

于 2014-02-13T07:01:15.937 回答
0

只要

class theChild extends theParent {
}

这是 OOP 的一个很好的例子。

于 2012-07-26T21:50:51.960 回答
0

您所做的称为覆盖,这没什么不好,但是如果您想让子类更好地遵守父类的签名,则可以使用如下接口您应该只给出签名,子类必须按原样实现它们宣布。

 interface theParent {
      function myMethod($param1) ;
    }

    class theChild extends theParent {
      function myMethod($param1) {
        // code here
      }
    }

希望能帮助到你 :)

于 2012-07-27T09:49:56.220 回答