name = $name; static::$className = $className; static::$messages = $messages; } public function getStatus() { if(!call_user_func([static::$className, 'isNameValid'], $this->name)) return ValidationStatus::INVALID_NAME; if(!call_user_func([static::$className, 'isExistByName'], $this->name)) return ValidationStatus::NOT_FOUND; return ValidationStatus::FOUND; } public function getMessageMap() { $status = $this->getStatus(); return [ $status->status() => static::$messages->getMessage($status) ]; } public function isValid() { return $this->getStatus()->isOk(); } }