Getter 和 Setter,静态和数组

Getter and Setter, static and array

我有一个错误 class 是这样的:

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>";
    }
}

我得到 "Warning: Illegal string offset." 我的哪一个代码导致了这个问题?我该如何解决?

答案很简单,我只是使用 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);

  }
}