validateString($string)) { throw new InvalidArgumentException(sprintf('Not a valid %s string.', self::tagToName($this->typeTag))); } $this->string = $string; } public function __toString(): string { return $this->string(); } /** * Get the string value. */ public function string(): string { return $this->string; } protected function encodedAsDER(): string { return $this->string; } /** * Check whether string is valid for the concrete type. */ protected function validateString(string $string): bool { // Override in derived classes return true; } }