2023-07-18 21:48:44 +00:00
|
|
|
<?php
|
|
|
|
namespace Misuzu\Config;
|
|
|
|
|
|
|
|
use RuntimeException;
|
|
|
|
use Index\Data\IDbResult;
|
|
|
|
|
|
|
|
class DbConfigValueInfo implements IConfigValueInfo {
|
|
|
|
private string $name;
|
|
|
|
private string $value;
|
|
|
|
|
|
|
|
public function __construct(IDbResult $result) {
|
|
|
|
$this->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',
|
2023-07-18 22:24:23 +00:00
|
|
|
default => 'unknown',
|
2023-07-18 21:48:44 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|