子方法声明应与PHP 5.3.13中父方法的声明兼容

时间:2013-05-20 15:26:14

标签: php oop object inheritance php-5.3

运行PHP 5.3.13时出现以下错误,我看不出原因。

  

CustomCourse :: toArray()的声明应该与之兼容   of BaseCourse :: toArray()

这是我下面的PHP代码,虽然减少了重要的事情,以便将帖子长度保持在所需的范围内。

我还应该补充一点,Course类没有公开toArray方法。

我在SO上看到了其他类似的主题,但似乎没有一个能为我提供解决方案。

/**
* this is the CHILD class
*/
class CustomCourse extends BaseCourse {

   public function toArray() {
      $values = parent::toArray();
      // do some more with $values here
      return $values;
   }

}

/**
* this is the PARENT class
*/
class BaseContact extends Course {

   public function toArray($platform = GOLF_PLATFORM) {
      $values = array();
      $values['user_id'] = $this->getUserId();
      // do some more in here
      return $values;
   }

}

1 个答案:

答案 0 :(得分:1)

这似乎是PHP报告的严格错误。

讨论如下:Declaration of Methods should be Compatible with Parent Methods in PHP

对于解决方案,您需要对两种方法使用相同的声明。

class CustomCourse extends BaseCourse {
    function toArray($platform=GOLF_PLATFORM) {
        //do something
    }
}

或者,您可以在php.ini文件中关闭严格的错误检查。