57 lines
1.1 KiB
PHP
57 lines
1.1 KiB
PHP
<?php
|
|
|
|
class Config implements ArrayAccess
|
|
{
|
|
private string $path;
|
|
|
|
public function asArray(): array
|
|
{
|
|
return $this->data;
|
|
}
|
|
|
|
public function fromArray($a)
|
|
{
|
|
$this->data = $a;
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
$this->path = dirname(__DIR__) . "/config.json";
|
|
}
|
|
|
|
public function read(): void
|
|
{
|
|
$this->data = @json_decode(@file_get_contents($this->path), true);
|
|
if ($this->data == null) {
|
|
throw new RuntimeException("Failed to read or parse config file");
|
|
}
|
|
}
|
|
|
|
public function save(): void
|
|
{
|
|
file_put_contents($this->path, json_encode($this->data,JSON_PRETTY_PRINT));
|
|
}
|
|
|
|
private mixed $data = [];
|
|
|
|
|
|
public function offsetExists(mixed $offset): bool
|
|
{
|
|
return isset($this->data[$offset]);
|
|
}
|
|
|
|
public function offsetGet(mixed $offset): mixed
|
|
{
|
|
return $this->data[$offset];
|
|
}
|
|
|
|
public function offsetSet(mixed $offset, mixed $value): void
|
|
{
|
|
$this->data[$offset] = $value;
|
|
}
|
|
|
|
public function offsetUnset(mixed $offset): void
|
|
{
|
|
unset($this->data[$offset]);
|
|
}
|
|
} |