Mercurial > packages > magicforger
view src/ConfigHelper.php @ 8:4216c0dc638c
Added base php cs fixer added config helper to maintain config
| author | luka |
|---|---|
| date | Wed, 18 Oct 2023 21:04:32 -0400 |
| parents | |
| children | d4730c14806d |
line wrap: on
line source
<?php namespace Wizzard\MagicForger; class ConfigHelper { public static $config = []; public const CONFIG_FILE_NAME = 'mf_config.php'; public static $config_path; public static function setup_config_path(string $base_path) { self::$config_path = $base_path.'/'.self::CONFIG_FILE_NAME; } protected static function get_config_path() { return self::$config_path; } public static function write_config() { $path = self::get_config_path(); $str = '<?php return '.self::varexport(self::$config, true).';'; file_put_contents($path, $str); self::format_file($path); } public static function read_config() { $path = self::get_config_path(); self::$config = include $path; } public static function print_config() { self::varexport(self::$config); } /** * PHP var_export() 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 */ public static function varexport($expression, $return = false) { $export = var_export($expression, true); $patterns = [ "/array \(/" => '[', "/^([ ]*)\)(,?)$/m" => '$1]$2', "/=>[ ]?\n[ ]+\[/" => '=> [', "/([ ]*)(\'[^\']+\') => ([\[\'])/" => '$1$2 => $3', ]; $export = preg_replace(array_keys($patterns), array_values($patterns), $export); if ((bool) $return) { return $export; } else { echo $export; } } protected static function format_file(string $path) { exec('php-cs-fixer fix '.$path); } public static function set_up_tables() { $schema = \DB::connection()->getDoctrineSchemaManager(); // get all the tables available in the db $tables = collect($schema->listTableNames())->all(); $insert_tables = []; foreach ($tables as $table) { $columns = []; $table_columns = $schema->introspectTable($table)->getColumns(); foreach ($table_columns as $column) { $columns[$column->getName()] = [ 'should_insert' => [ 'controller' => true, 'model' => true, 'requests' => true, 'views' => true, ], ]; } $insert_tables[$table] = $columns; } self::merge_array_priority(self::$config['tables'], $insert_tables); return $tables; } private static function merge_array_priority(&$priority, $merged) { foreach ($merged as $key => $value) { // if the priority key is not set, automatically add the merged values if (!isset($priority[$key])) { $priority[$key] = $value; } else { // if the value is an array recursively merge if (is_array($value) && is_array($priority[$key])) { self::merge_array_priority($priority[$key], $value); } } } } }
