php - PHP 严格标准在不覆盖超类方法的子类上抛出错误
问题描述
我遇到以下警告:
严格的标准:FGLU_Activity::delete() 的声明应该与 ...
FGLU_Activity 扩展了 FGLU_Entity 并且不覆盖静态 ::delete 方法。
关于如何在下次遇到此错误时避免此错误的任何提示?
<?php
class FGLU_Entity {
/*
* ...
*/
static function delete($id,$commit=true) {
global $wpdb;
// first, delete any rows in mapped tables
$total_count = 0;
if ($commit) $wpdb->query("START TRANSACTION");
$instance = new static::$class_name();
$instance->{static::$key} = $id;
/*
* ...
*/
// then, delete the base row
$needles = array("xa_table","xa_key","xa_id");
$threads = array(static::$table,static::$key,$id);
$sql = fglu_sql(FGLU_SQL_DELETE,$needles,$threads);
$row_count = $wpdb->query($sql);
if ($row_count === false) {
fglu_setError(__METHOD__,"SQL Error<br/>$sql<br/>$wpdb->last_error");
if ($commit) $wpdb->query("ROLLBACK");
return false;
} else {
if ($commit) $wpdb->query("COMMIT");
$total_count += $row_count;
return $total_count;
}
}
/**/
}
class FGLU_Activity extends FGLU_Entity {
// Keys
public $activity_id;
// Required Attributes
public $name;
public $short;
public $activity_cd;
public $display_order;
public $private = 0;
public $school_visit = 0;
public $report = 0;
public $capacity = 0;
// System Attributes
public $id_user;
public $dt_updated;
/*
* ...
*/
}
?>
解决方案
FGLU_Activity 扩展了 FGLU_Entity 并且不覆盖静态 ::delete 方法。
关于如何在下次遇到此错误时避免此错误的任何提示?
您有一个包含 delete() 方法的子类,其参数与父类中的 delete() 方法中的参数不匹配。这并不是一个真正的错误。如果功能不匹配,请重命名子方法以显示这一点,或者如果确实如此,但父项中的参数是多余的,请添加 FGLU_Activity($id=NULL,$commit=NULL)。
如果您还没有在子类中声明该方法,则不会出现此错误。
要么,要么我真的错过了一些东西。静态方法仍然受制于可见性、继承等方面的标准规则,所以这不是真正的问题。
推荐阅读
- javascript - 如何连接我的 mongoDB 模式/模型?
- directory - 有没有一个网站的文件夹太重的问题?
- runtime - 添加pallet_assets 错误:^^^ Config not found in 'pallet_assets'
- ios - 自定义 TabBar 设计 iOS
- java - 扩展类时构造函数中的参数太多
- python - Python:一次将函数应用于目录中的一个文件,并在用户输入后移至下一个文件
- github - 向 GitHub 添加文件不会更新 Releases Assets 源代码
- python - Python Parseltongue 解码器 - 如何反编译?
- ios - 如何在此代码的后台集成相机
- javascript - Typescript + Require.js + PIXI 6 - 导入附加到窗口但在主范围内未定义