add array to string/file helper
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@ logs/*
|
|||||||
.buildpath
|
.buildpath
|
||||||
.project
|
.project
|
||||||
.settings/
|
.settings/
|
||||||
|
.test/
|
||||||
*.diff
|
*.diff
|
||||||
*~
|
*~
|
||||||
.well-known
|
.well-known
|
||||||
|
|||||||
@@ -477,4 +477,76 @@ class PhpHelper
|
|||||||
}
|
}
|
||||||
return strcasecmp($a[self::$sort_key], $b[self::$sort_key]);
|
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