Child声明方法应与Parent方法兼容

时间:2016-08-11 17:13:25

标签: php class oop

  

警告:Child :: default_action($ form_id)的声明应该与Parent :: default_action()

兼容

我知道我缺乏理解对象编码的部门,而且我很幸运地修复了一些事情但是在这个消息中我试着理解为什么有些东西有效。

我在php错误日志中收到上面的错误消息。原始父方法是

 function default_action() {
       echo "<html><body></body></html>";
 }

我把它改成了

  function set_default_action() {
       echo "<html><body></body></html>";
  }

日志中的错误消息消失了。现在我试图找出为什么这样做。我把它放在那里是因为我在代码set_current_action中看到了。我有点认为set_ get_其他一些是方法声明之前的命令或类似的东西。

1 个答案:

答案 0 :(得分:1)

问题是父和子的函数声明不兼容(如错误所示)

public function method([$args])是函数声明。

在你的情况下,父方法不接受任何参数但子方法没有,所以你得到错误。

要解决此问题,您应该让父方法接受与子方法相同的参数。您可能希望为参数提供一些合理的默认值。

//parent class
function default_action($form_id = null) {

正如RiggsFolly指出的那样,您可能无法控制父类,并且必须使您的子类符合要求。在这种情况下,您可以使用类属性将表单ID传递给方法。

//Child class

class Child extends Parent{
    public $form_id;

    function setFormId($form_id){
      $this->form_id = $form_id;

    }
    function default_action(){
        //Work with $this->form_id
    }

}

//In code
$form_id = 123;
$C = new Child();
$C->setFormId($form_id);
$C->default_action();