我已经升级到 PHP 5.4,现在我收到了这个错误消息,我知道为什么我会收到这个消息,但需要找出如何修复它。我知道这是因为当子类扩展父类 validate() 方法时,我在子类中有额外的参数。
严格标准:ValidateName::validate() 的声明应与第 4 行 C:\www\testing\ValidateName.php 中的 Validator::validate($validateThis) 兼容
我在这里看到有人说要使用 func_get_args() 但其他人说不要使用它。
如果出现此错误,我该如何摆脱?
我的家长班
//Constructor
public function validate($validateThis) {}
// Function to add all the error messages to the array
public function setError($msg) {
$this->errors[] = $msg;
}
// Function to check if the validation passes
public function isValid() {
if (count($this->errors) > 0) {
return false;
} else {
return true;
}
}
// Function to get each of the errors
public function fetch() {
$error = each($this->errors);
if ($error) {
return $error['value'];
} else {
reset($this->errors);
return false;
}
}
}
?>
和我的孩子班
class ValidateName extends Validator {
public function ValidateName ($name, $field) {
// Create an array of errors
$this->errors = array();
// Validate the text for that field
$this->validate($name, $field);
}
public function validate() {
// If any of the text fields are empty add an error message to the array
if(empty($name)) {
$this->setError($field.' field is empty');
}
else {
// Validate the text fields against the regex. If it fails add error message to array
if (!preg_match('/^[a-zA-Z- ]+$/', $name)) {
$this->setError($field.' contains invalid characters');
}
// if the length of the field is less than 2, add error message to array
if (strlen($name) < 2) {
$this->setError($field.' is too short');
}
// if the length of the field greater than 30, add error message to array
if (strlen($name) > 50) {
$this->setError($field.' is too long');
}
}
}
}
?>