level = in_array($level, ['Note', 'Warning', 'Error'], true) ? $level : '?'; $this->code = $code >= 1 ? $code : 0; $this->message = $message; } /** * @param mixed[] $row */ public static function fromArray(array $row): self { $level = ''; $code = 0; $message = ''; if (isset($row['Level']) && is_string($row['Level'])) { $level = $row['Level']; } if (isset($row['Code']) && is_numeric($row['Code'])) { $code = (int) $row['Code']; } if (isset($row['Message']) && is_string($row['Message'])) { $message = $row['Message']; } return new self($level, $code, $message); } /** * @psalm-return non-empty-string */ public function __toString(): string { return $this->level . ': #' . $this->code . ($this->message !== '' ? ' ' . $this->message : ''); } }