2017-07-03 19:04:27 +02:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Yaml ;
use Symfony\Component\Yaml\Exception\ParseException ;
/**
* Yaml offers convenience methods to load and dump YAML .
*
* @ author Fabien Potencier < fabien @ symfony . com >
2018-08-07 10:42:11 +02:00
*
* @ final since version 3.4
2017-07-03 19:04:27 +02:00
*/
class Yaml
{
const DUMP_OBJECT = 1 ;
const PARSE_EXCEPTION_ON_INVALID_TYPE = 2 ;
const PARSE_OBJECT = 4 ;
const PARSE_OBJECT_FOR_MAP = 8 ;
const DUMP_EXCEPTION_ON_INVALID_TYPE = 16 ;
const PARSE_DATETIME = 32 ;
const DUMP_OBJECT_AS_MAP = 64 ;
const DUMP_MULTI_LINE_LITERAL_BLOCK = 128 ;
const PARSE_CONSTANT = 256 ;
const PARSE_CUSTOM_TAGS = 512 ;
const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 1024 ;
2018-08-07 10:42:11 +02:00
/**
* @ deprecated since version 3.4 , to be removed in 4.0 . Quote your evaluable keys instead .
*/
2017-07-03 19:04:27 +02:00
const PARSE_KEYS_AS_STRINGS = 2048 ;
2018-08-07 10:42:11 +02:00
/**
* Parses a YAML file into a PHP value .
*
* Usage :
* < code >
* $array = Yaml :: parseFile ( 'config.yml' );
* print_r ( $array );
* </ code >
*
* @ param string $filename The path to the YAML file to be parsed
* @ param int $flags A bit field of PARSE_ * constants to customize the YAML parser behavior
*
* @ return mixed The YAML converted to a PHP value
*
* @ throws ParseException If the file could not be read or the YAML is not valid
*/
public static function parseFile ( $filename , $flags = 0 )
{
$yaml = new Parser ();
return $yaml -> parseFile ( $filename , $flags );
}
2017-07-03 19:04:27 +02:00
/**
* Parses YAML into a PHP value .
*
* Usage :
* < code >
* $array = Yaml :: parse ( file_get_contents ( 'config.yml' ));
* print_r ( $array );
* </ code >
*
* @ param string $input A string containing YAML
* @ param int $flags A bit field of PARSE_ * constants to customize the YAML parser behavior
*
* @ return mixed The YAML converted to a PHP value
*
* @ throws ParseException If the YAML is not valid
*/
public static function parse ( $input , $flags = 0 )
{
2018-08-07 10:42:11 +02:00
if ( \is_bool ( $flags )) {
@ trigger_error ( 'Passing a boolean flag to toggle exception handling is deprecated since Symfony 3.1 and will be removed in 4.0. Use the PARSE_EXCEPTION_ON_INVALID_TYPE flag instead.' , E_USER_DEPRECATED );
2017-07-03 19:04:27 +02:00
if ( $flags ) {
$flags = self :: PARSE_EXCEPTION_ON_INVALID_TYPE ;
} else {
$flags = 0 ;
}
}
2018-08-07 10:42:11 +02:00
if ( \func_num_args () >= 3 ) {
@ trigger_error ( 'Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the PARSE_OBJECT flag instead.' , E_USER_DEPRECATED );
2017-07-03 19:04:27 +02:00
if ( func_get_arg ( 2 )) {
$flags |= self :: PARSE_OBJECT ;
}
}
2018-08-07 10:42:11 +02:00
if ( \func_num_args () >= 4 ) {
@ trigger_error ( 'Passing a boolean flag to toggle object for map support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the Yaml::PARSE_OBJECT_FOR_MAP flag instead.' , E_USER_DEPRECATED );
2017-07-03 19:04:27 +02:00
if ( func_get_arg ( 3 )) {
$flags |= self :: PARSE_OBJECT_FOR_MAP ;
}
}
$yaml = new Parser ();
return $yaml -> parse ( $input , $flags );
}
/**
* Dumps a PHP value to a YAML string .
*
* The dump method , when supplied with an array , will do its best
* to convert the array into friendly YAML .
*
* @ param mixed $input The PHP value
* @ param int $inline The level where you switch to inline YAML
* @ param int $indent The amount of spaces to use for indentation of nested nodes
* @ param int $flags A bit field of DUMP_ * constants to customize the dumped YAML string
*
* @ return string A YAML string representing the original PHP value
*/
public static function dump ( $input , $inline = 2 , $indent = 4 , $flags = 0 )
{
2018-08-07 10:42:11 +02:00
if ( \is_bool ( $flags )) {
@ trigger_error ( 'Passing a boolean flag to toggle exception handling is deprecated since Symfony 3.1 and will be removed in 4.0. Use the DUMP_EXCEPTION_ON_INVALID_TYPE flag instead.' , E_USER_DEPRECATED );
2017-07-03 19:04:27 +02:00
if ( $flags ) {
$flags = self :: DUMP_EXCEPTION_ON_INVALID_TYPE ;
} else {
$flags = 0 ;
}
}
2018-08-07 10:42:11 +02:00
if ( \func_num_args () >= 5 ) {
@ trigger_error ( 'Passing a boolean flag to toggle object support is deprecated since Symfony 3.1 and will be removed in 4.0. Use the DUMP_OBJECT flag instead.' , E_USER_DEPRECATED );
2017-07-03 19:04:27 +02:00
if ( func_get_arg ( 4 )) {
$flags |= self :: DUMP_OBJECT ;
}
}
$yaml = new Dumper ( $indent );
return $yaml -> dump ( $input , $inline , 0 , $flags );
}
}