PHP数组未实例化

时间:2013-12-22 18:01:56

标签: php

<?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

     

致命错误:无法访问空属性

1 个答案:

答案 0 :(得分:1)

您正在使用JavaScript变量声明,您应该将其更改为

private $_passed = false;
private $_errors = array();
private $_db     = null;

然后,当您将新项目分配给数组时,请删除$

$this->$_errors[] = $error;

变为

$this->_errors[] = $error;