name = $result->getString(0); $this->value = $result->getString(1); } public function getName(): string { return $this->name; } public function getType(): string { return match($this->value[0]) { 's' => 'string', 'a' => 'array', 'i' => 'int', 'b' => 'bool', 'd' => 'float', default => 'unknown', }; } public function isString(): bool { return $this->value[0] === 's'; } public function isInteger(): bool { return $this->value[0] === 'i'; } public function isFloat(): bool { return $this->value[0] === 'd'; } public function isBoolean(): bool { return $this->value[0] === 'b'; } public function isArray(): bool { return $this->value[0] === 'a'; } public function getValue(): mixed { return unserialize($this->value); } public function getString(): string { $value = $this->getValue(); if(!is_string($value)) throw new RuntimeException('Value is not a string.'); return $value; } public function getInteger(): int { $value = $this->getValue(); if(!is_int($value)) throw new RuntimeException('Value is not an integer.'); return $value; } public function getFloat(): float { $value = $this->getValue(); if(!is_float($value)) throw new RuntimeException('Value is not a floating point number.'); return $value; } public function getBoolean(): bool { $value = $this->getValue(); if(!is_bool($value)) throw new RuntimeException('Value is not a boolean.'); return $value; } public function getArray(): array { $value = $this->getValue(); if(!is_array($value)) throw new RuntimeException('Value is not an array.'); return $value; } public function __toString(): string { return $this->isArray() ? implode(', ', $this->getArray()) : (string)$this->getValue(); } }