我正在尝试从其子方法中调用父方法,该方法具有相同的方法名称。这样做会导致严格的标准错误。有一个简单的重命名子方法的解决方案。但是,有没有办法在没有标准警告的情况下保持两种方法的名称相同?感谢。
严格标准:Child :: getContentFromDb()的声明应该与xxx
上/foo/Child.class.php中的Parent :: getContentFromDb($ id)兼容伪代码示例:
class Parent {
protected function getInfoFromDb($id) {
return $infoFromDb;
}
}
class Child extends Parent {
public static $id = xx;
public $info = array();
public function __construct() {
$this->info = $this->getInfoFromDb();
}
public function getInfoFromDb() {
// the line below causes the problem
return parent::getInfoFromDb(self::$id);
}
}
答案 0 :(得分:1)
您的方法覆盖应采用与您覆盖的参数列表相同的参数列表。
e.g。
class ParentClass {
protected function getInfoFromDb($id) {
return "INFO FROM DB:" . $id;
}
}
class Child extends ParentClass {
public static $id = "xx";
public $info = array();
public function __construct() {
$this->info = $this->getInfoFromDb();
}
/**
* @param specific ID, or do not set for default action.
* @return string
*/
public function getInfoFromDb($id = false) {
return parent::getInfoFromDb(self::$id);
}
}