$value ) { $code .= self::encode( $key, $value, 1 ); } $code .= "];\n"; return $code; } /** * Create an PHP class file with the array as a class constant. * * PHP classes can be autoloaded by name, which allows usage to be decoupled * from the file path. * * @since 1.37 * @param array $data * @param array{header:string,namespace:string,class:string,const:string} $layout * @return string PHP code */ public static function writeClass( array $data, array $layout ) { $code = " $value ) { $code .= self::encode( $key, $value, 2 ); } $code .= "\t];\n}\n"; return $code; } /** * Recursively turn one k/v pair into properly-indented PHP * * @param string|int $key * @param mixed $value * @param int $indent Indentation level * @return string PHP code */ private static function encode( $key, $value, $indent ) { $tabs = str_repeat( "\t", $indent ); $line = $tabs . var_export( $key, true ) . ' => '; if ( is_array( $value ) ) { $line .= "[\n"; foreach ( $value as $subkey => $subvalue ) { $line .= self::encode( $subkey, $subvalue, $indent + 1 ); } $line .= "$tabs]"; } else { $line .= var_export( $value, true ); } $line .= ",\n"; return $line; } }