警告:子级::default_action($form_id(的声明应与父级::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_
和其他一些是在方法声明或类似的东西之前的命令。
问题是父级和子级的函数声明不兼容(如错误所示(
public function method([$args])
是函数声明。
在您的情况下,父方法不接受任何参数,但子方法接受任何参数。因此您会得到错误。
要解决此问题,您应该让父方法接受与子方法相同的参数。您可能希望为参数提供一些合理的默认值。
//parent class
function default_action($form_id = null) {
正如RiggsFilly所指出的,您可能无法控制父类,必须使子类符合。在这种情况下,可以使用类属性将表单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();