Getter和Setter,静态和数组

时间:2015-01-22 10:06:18

标签: php arrays static-methods

我有一个像这样的错误类:

class Error{

    private static $_errors =[];

    public static function getError()
    {
        return self::$_errors;
    }


    public static function setError($fields, $messages)
    {
       self::$_errors[$fields] = "$messages ";
    }
}

然后我有另一个文件来访问这个getter和setter:

public function required($fields= array())
{
    foreach($fields as $value) {
        if (isset($this->_input[$value])) {
            if (empty($this->clean($this->_input[$value]))) {
                $name = self::changename($value);
                $messages = "$name is required.";
                error::setError($value, $messages);
            }
        } else{
            $name = self::changename($value);
            $messages = "$name not found.";
            error::setError($value, $messages);
        }
    }
}

当我尝试打印这样的错误消息时:

if (!empty(error::getError())) {
    foreach (error::getError() as $error) {
        echo "<li>$error</li>";
    }
}

我收到了“警告:非法字符串偏移”。我的哪一个代码导致了这个问题?以及我该如何解决它?

1 个答案:

答案 0 :(得分:0)

答案很简单,我只使用 is_array ,因为看起来$fields包含的是数组。如果它不是个人的。

foreach($field as $value) {
  if (isset($this->_input[$value])) {

    if (empty(Security::clean($this->_input[$value]))) {
      $messages = "is Required.";
      error::inputError($value, $messages);
     }
  } else{
     $messages = "Tidak ditemukan.";
     error::inputError($field, $messages);

  }
}