$value ) { $code .= self::encodePair( $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::encodePair( $key, $value, 2 ); } $code .= "\t];\n}\n"; return $code; } /** * Recursively turn one k/v pair into properly-indented PHP * * @since 1.38 * * @param string|int $key * @param mixed $value * @param int $indent Indentation level * @return string PHP code */ private static function encodePair( $key, $value, $indent = 0 ) { $tabs = str_repeat( "\t", $indent ); $line = $tabs . var_export( $key, true ) . ' => '; $line .= self::encodeValue( $value, $indent ); $line .= ",\n"; return $line; } /** * Recursively turn one value into properly-indented PHP * * @since 1.38 * * @param mixed $value * @param int $indent Indentation level * @return string PHP code */ public static function encodeValue( $value, $indent = 0 ) { if ( is_array( $value ) ) { $tabs = str_repeat( "\t", $indent ); $line = "[\n"; foreach ( $value as $subkey => $subvalue ) { $line .= self::encodePair( $subkey, $subvalue, $indent + 1 ); } $line .= "$tabs]"; return $line; } else { $exportedValue = var_export( $value, true ); if ( $exportedValue === 'NULL' ) { // var_export() exports nulls as uppercase NULL which // violates our own coding standards. $exportedValue = 'null'; } return $exportedValue; } } }