add array to string/file helper
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@ logs/*
|
||||
.buildpath
|
||||
.project
|
||||
.settings/
|
||||
.test/
|
||||
*.diff
|
||||
*~
|
||||
.well-known
|
||||
|
||||
@@ -477,4 +477,76 @@ class PhpHelper
|
||||
}
|
||||
return strcasecmp($a[self::$sort_key], $b[self::$sort_key]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate php file from array.
|
||||
*
|
||||
* @param array $array
|
||||
* @param bool $asReturn
|
||||
* @return string
|
||||
*/
|
||||
public static function parseArrayToPhpFile(array $array, string $comment = null, $asReturn = false): string
|
||||
{
|
||||
$str = sprintf("<?php\n// %s\n\n", $comment ?? 'autogenerated froxlor file');
|
||||
|
||||
if ($asReturn) {
|
||||
return $str . sprintf("return %s;\n\n", rtrim(self::parseArrayToString($array), "\n,"));
|
||||
}
|
||||
|
||||
foreach ($array as $var => $arr) {
|
||||
$str .= sprintf("\$%s = %s;\n\n", $var, rtrim(self::parseArrayToString($arr), "\n,"));
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse array to array string.
|
||||
*
|
||||
* @param $array
|
||||
* @param $key
|
||||
* @param int $depth
|
||||
* @return string
|
||||
*/
|
||||
public static function parseArrayToString($array, $key = null, int $depth = 1): string
|
||||
{
|
||||
$str = '';
|
||||
if (is_array($array)) {
|
||||
if (!is_null($key)) {
|
||||
$str .= self::tabPrefix(($depth-1), "'{$key}' => [\n");
|
||||
} else {
|
||||
$str .= self::tabPrefix(($depth-1), "[\n");
|
||||
}
|
||||
foreach ($array as $key => $value) {
|
||||
if (isset($key) && !is_array($value)) {
|
||||
if (is_bool($value)) {
|
||||
$str .= self::tabPrefix($depth, sprintf("'%s' => %s,\n", $key, $value ? 'true' : 'false'));
|
||||
} elseif (is_int($value)) {
|
||||
$str .= self::tabPrefix($depth, "'{$key}' => $value,\n");
|
||||
} else {
|
||||
$str .= self::tabPrefix($depth, "'{$key}' => '{$value}',\n");
|
||||
}
|
||||
} elseif (is_array($value)) {
|
||||
$str .= self::parseArrayToString($value, $key, ($depth + 1));
|
||||
}
|
||||
}
|
||||
$str .= self::tabPrefix(($depth-1), "],\n");
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply tabs with given depth to string.
|
||||
*
|
||||
* @param int $depth
|
||||
* @param string $str
|
||||
* @return string
|
||||
*/
|
||||
private static function tabPrefix(int $depth, string $str = ''): string
|
||||
{
|
||||
$tab = '';
|
||||
for ($i = 1; $i <= $depth; $i++) {
|
||||
$tab .= "\t";
|
||||
}
|
||||
return $tab . $str;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user