<?php
class Validate{
private $_passed = false,
$_errors = array(),
$_db = null;
public function __construct(){
$this->_db=DB::getInstance();
}
public function check($source,$items = array()){
foreach($items as $item=>$rules){
foreach($rules as $rule => $rule_value){
$value = $source[$item];
if($rule == 'required' && empty($value)){
$this->addError("{$item} is required");
}else
{
}
}
}
if($this->$_errors){ # <-- line 27
$this->$_passed=true;
}
else
{
$this->$_passed=false;
}
}
private function addError($error){
$this->$_errors[] = $error; # <-- line 37
}
public function errors(){
return $this->$_errors;
}
public function passed(){
return $this->$_passed;
}
}
我在第37行收到错误:
致命错误:无法使用[]进行阅读。
如果没有调用addError($error)
,那么在第27行我得到:
注意:未定义的变量:_errors
致命错误:无法访问空属性
答案 0 :(得分:1)
您正在使用JavaScript变量声明,您应该将其更改为
private $_passed = false;
private $_errors = array();
private $_db = null;
然后,当您将新项目分配给数组时,请删除$
$this->$_errors[] = $error;
变为
$this->_errors[] = $error;