public function isValid() { if (!$this->has_been_validated) { $this->has_been_validated = true; $this->cleanData(); foreach ($this->fields as $name => $Field) { if (!isset($this->data[$name])) { $this->data[$name] = null; } $this->data[$name] = $Field->valid($this->data[$name]); $this->errors_on_fields = $this->errors_on_fields || $Field->hasErrors(); } $this->compare(); return !$this->hasErrors(); } else { FormErrors::alreadyValidated(); } }