2013-12-22 2 views
-2
<?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; 
    } 
} 

I는 37 행에 오류가 점점 오전 인스턴스화하지 :PHP 배열이

Fatal error: Cannot use [] for reading.

addError($error) 경우 호출되지 않습니다를 다음 라인 (27)에 내가 얻을 :

Notice: Undefined variable: _errors

Fatal error: Cannot access empty property

+1

이용이 드롭? 'array_push ($ this -> $ _ errors, $ error);'. –

+0

변수가 아직 정의되지 않았습니다. – Sonicdeadlock

답변

1

당신은있어 JavaScript 변수 선언을 사용하면

private $_passed = false; 
private $_errors = array(); 
private $_db  = null; 
으로 변경해야합니다. 당신이 배열에 새 항목을 할당 할 때

는 다음, $

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

이 array_push` 대신`

$this->_errors[] = $error;