我已升级到PHP 5.4,现在我收到此错误消息,我知道为什么我收到消息但需要找出如何修复它。我知道这是因为我在扩展父类validate()方法时在子类中有其他参数。
严格标准:ValidateName :: validate()的声明应该是 兼容Validator :: validate($ validateThis)in 第4行的C:\ www \ testing \ ValidateName.php
我在这里看到有人说使用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');
}
}
}
}
?>
答案 0 :(得分:1)
// constructor
评论错误,因为班级名称为Validator
,请改进您的问题: - )$ignored
方法添加validate()
参数来“修复”它,但这可能是一个设计问题:您应该确定要验证的对象是否作为参数传递到validate
方法或在施工期间(这个选择稍微改变了你的课程的性质)答案 1 :(得分:0)
自PHP 5.3.3
以来的方法构造函数
__construct
所以你必须使用:
class ValidateName extends Validator {
public function __construct($name, $field) { //It must not be ValidateName
// Create an array of errors
$this->errors = array();
// Validate the text for that field
$this->validate($name, $field);
}
}
派生类的构造者可能与父母不同,但如果你写public function ClassName()
,它被视为一种常用的方法,并且在派生时,你应该实现它必须接受的参数。