我有以下课程:
class parent{
public function getTotalPages($idName = false,$tableName = false,$whereClause = false,$itemsPerPage = false){
$stmt = $this->dbc->prepare("SELECT COUNT({$idName}) FROM {$tableName} {$whereClause}");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($totalItems);
$stmt->fetch();
$stmt->close();
return ceil($totalItems/$itemsPerPage);
}
}
以及以下子类:
class child extends parent{
public function getTotalPages(){
return parent::getTotalPages('p.product_id','products p',$this->whereClause,$this->itemsPerPage);
}
}
注意:这只是类的摘录,我遗漏了不必要的代码。
代码有效,但我收到以下警告:
Warning: Declaration of child::getTotalPages() should be compatible with parent::getTotalPages($idName = '', $tableName = '', $whereClause = '', $itemsPerPage = '')
我的错误在哪里?
编辑2(解决方案):
当我将父级的方法名称更改为manageTotalPages(除了getTotalpages之外的任何内容)时,警告不会再次显示。
答案 0 :(得分:0)
如果没有paretn getTotalPages
中的参数,则不能使用父方法class child extends parent{
public function getPages(){
return $this->getTotalPages('p.product_id','products p',$this->whereClause,$this->itemsPerPage);
}
}
。要使用父方法getTotalPages,您还可以使用不同的子方法:
getTotalPages
子类总是包含方法asset()
,并且不需要在子类中对它们进行显式处理。