Move config file creation to home config

This commit is contained in:
Tim 2025-05-18 23:55:37 +02:00
parent 0fcbd87083
commit b7e5ee3b0e

View File

@ -2,7 +2,7 @@
require_once __DIR__ . '/functions.php'; require_once __DIR__ . '/functions.php';
readonly class homeConfig extends configReader readonly class homeConfig extends config
{ {
private const CONFIG_BASE_PATH = '.config'; private const CONFIG_BASE_PATH = '.config';
@ -15,21 +15,34 @@ readonly class homeConfig extends configReader
self::CONFIG_BASE_PATH, self::CONFIG_BASE_PATH,
$name $name
)); ));
$this->createConfig();
}
private function createConfig(): void
{
if (file_exists($this->getConfigFile())) {
return;
} else {
if (!is_dir($this->getConfigPath())) {
mkdir($this->getConfigPath(), 0755, true);
}
$this->writeConfig([]);
}
} }
} }
readonly class configReader readonly class config
{ {
public function __construct( public function __construct(
private string $path, private string $path,
private string $fileName = 'config.php', private string $fileName = 'config.php',
) ) {}
{
$this->init();
}
public function get(string $key, mixed $default = null): mixed public function get(string $key, mixed $default = null): mixed
{ {
if (!file_exists($this->getConfigFile())) {
return $default;
}
$config = include $this->getConfigFile(); $config = include $this->getConfigFile();
return $config[$key] ?? $default; return $config[$key] ?? $default;
} }
@ -41,32 +54,17 @@ readonly class configReader
$this->writeConfig($config); $this->writeConfig($config);
} }
private function getConfigFile(): string protected function getConfigFile(): string
{ {
return path( return path($this->getConfigPath(), $this->fileName);
$this->getConfigPath(),
$this->fileName
);
} }
private function getConfigPath(): string protected function getConfigPath(): string
{ {
return $this->path; return $this->path;
} }
private function init(): void protected function writeConfig(array $config): void
{
if (file_exists($this->getConfigFile())) {
return;
} else {
if (!is_dir($this->getConfigPath())) {
mkdir($this->getConfigPath(), 0755, true);
}
$this->writeConfig([]);
}
}
public function writeConfig(array $config): void
{ {
file_put_contents($this->getConfigFile(), '<?php return ' . var_export($config, true) . ';'); file_put_contents($this->getConfigFile(), '<?php return ' . var_export($config, true) . ';');
} }