Mercurial > packages > magicforger
changeset 10:a9ff874afdbd
better comments for config helper
| author | luka |
|---|---|
| date | Sat, 02 Dec 2023 10:20:32 -0500 |
| parents | d4730c14806d |
| children | 3426c7e91c24 f65ab84ee47f |
| files | src/ConfigHelper.php |
| diffstat | 1 files changed, 48 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ConfigHelper.php Sat Dec 02 10:18:52 2023 -0500 +++ b/src/ConfigHelper.php Sat Dec 02 10:20:32 2023 -0500 @@ -4,47 +4,76 @@ class ConfigHelper { + // Config array public static $config = []; + + // Config file name constant public const CONFIG_FILE_NAME = 'mf_config.php'; + + // Config path variable public static $config_path; + /** + * Set up configuration path + * + * @param string $base_path + */ public static function setup_config_path(string $base_path) { self::$config_path = $base_path.'/'.self::CONFIG_FILE_NAME; } + /** + * Get configuration path + * + * @return string + */ protected static function get_config_path() { return self::$config_path; } + /** + * Write configuration into a file + */ public static function write_config() { $path = self::get_config_path(); $str = '<?php - return '.self::varexport(self::$config, true).';'; + return '.self::varexport(self::$config, true).';'; file_put_contents($path, $str); + // After writing the file, format it self::format_file($path); } + /** + * Read configuration from a file + */ public static function read_config() { $path = self::get_config_path(); self::$config = include $path; } + /** + * Print configuration + */ public static function print_config() { self::varexport(self::$config); } /** - * PHP var_export() with short array syntax (square brackets) indented 2 spaces. + * PHP var_export() function with short array syntax (square brackets) indented 2 spaces. * * NOTE: The only issue is when a string value has `=>\n[`, it will get converted to `=> [` * * @see https://www.php.net/manual/en/function.var-export.php + * + * @param mixed $expression + * @param boolean $return + * @return mixed */ public static function varexport($expression, $return = false) { @@ -63,15 +92,23 @@ } } + /** + * Format the given file + * + * @param string $path + */ protected static function format_file(string $path) { exec('php-cs-fixer fix '.$path); } + /** + * Set up tables + */ public static function set_up_tables() { $schema = \DB::connection()->getDoctrineSchemaManager(); - // get all the tables available in the db + // get all the tables available in the database $tables = collect($schema->listTableNames())->all(); $insert_tables = []; @@ -99,11 +136,18 @@ $insert_tables[$table]['columns'] = $columns; $insert_tables[$table]['type'] = 'default'; } + // Merge the new tables configuration into the initial config self::merge_array_priority(self::$config['tables'], $insert_tables); return $tables; } + /** + * Merge two arrays and ensure priority values do not get overwritten + * + * @param array $priority + * @param array $merged + */ private static function merge_array_priority(&$priority, $merged) { foreach ($merged as $key => $value) { @@ -111,7 +155,7 @@ if (!isset($priority[$key])) { $priority[$key] = $value; } else { - // if the value is an array recursively merge + // if the value is an array recursively merge with priority if (is_array($value) && is_array($priority[$key])) { self::merge_array_priority($priority[$key], $value); }
