1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau/* 4*04fd306cSNickeau * This file is part of the Symfony package. 5*04fd306cSNickeau * 6*04fd306cSNickeau * (c) Fabien Potencier <fabien@symfony.com> 7*04fd306cSNickeau * 8*04fd306cSNickeau * For the full copyright and license information, please view the LICENSE 9*04fd306cSNickeau * file that was distributed with this source code. 10*04fd306cSNickeau */ 11*04fd306cSNickeau 12*04fd306cSNickeaunamespace Symfony\Component\Yaml; 13*04fd306cSNickeau 14*04fd306cSNickeauuse Symfony\Component\Yaml\Exception\ParseException; 15*04fd306cSNickeau 16*04fd306cSNickeau/** 17*04fd306cSNickeau * Yaml offers convenience methods to load and dump YAML. 18*04fd306cSNickeau * 19*04fd306cSNickeau * @author Fabien Potencier <fabien@symfony.com> 20*04fd306cSNickeau * 21*04fd306cSNickeau * @final 22*04fd306cSNickeau */ 23*04fd306cSNickeauclass Yaml 24*04fd306cSNickeau{ 25*04fd306cSNickeau public const DUMP_OBJECT = 1; 26*04fd306cSNickeau public const PARSE_EXCEPTION_ON_INVALID_TYPE = 2; 27*04fd306cSNickeau public const PARSE_OBJECT = 4; 28*04fd306cSNickeau public const PARSE_OBJECT_FOR_MAP = 8; 29*04fd306cSNickeau public const DUMP_EXCEPTION_ON_INVALID_TYPE = 16; 30*04fd306cSNickeau public const PARSE_DATETIME = 32; 31*04fd306cSNickeau public const DUMP_OBJECT_AS_MAP = 64; 32*04fd306cSNickeau public const DUMP_MULTI_LINE_LITERAL_BLOCK = 128; 33*04fd306cSNickeau public const PARSE_CONSTANT = 256; 34*04fd306cSNickeau public const PARSE_CUSTOM_TAGS = 512; 35*04fd306cSNickeau public const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 1024; 36*04fd306cSNickeau public const DUMP_NULL_AS_TILDE = 2048; 37*04fd306cSNickeau 38*04fd306cSNickeau /** 39*04fd306cSNickeau * Parses a YAML file into a PHP value. 40*04fd306cSNickeau * 41*04fd306cSNickeau * Usage: 42*04fd306cSNickeau * 43*04fd306cSNickeau * $array = Yaml::parseFile('config.yml'); 44*04fd306cSNickeau * print_r($array); 45*04fd306cSNickeau * 46*04fd306cSNickeau * @param string $filename The path to the YAML file to be parsed 47*04fd306cSNickeau * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior 48*04fd306cSNickeau * 49*04fd306cSNickeau * @return mixed 50*04fd306cSNickeau * 51*04fd306cSNickeau * @throws ParseException If the file could not be read or the YAML is not valid 52*04fd306cSNickeau */ 53*04fd306cSNickeau public static function parseFile(string $filename, int $flags = 0) 54*04fd306cSNickeau { 55*04fd306cSNickeau $yaml = new Parser(); 56*04fd306cSNickeau 57*04fd306cSNickeau return $yaml->parseFile($filename, $flags); 58*04fd306cSNickeau } 59*04fd306cSNickeau 60*04fd306cSNickeau /** 61*04fd306cSNickeau * Parses YAML into a PHP value. 62*04fd306cSNickeau * 63*04fd306cSNickeau * Usage: 64*04fd306cSNickeau * <code> 65*04fd306cSNickeau * $array = Yaml::parse(file_get_contents('config.yml')); 66*04fd306cSNickeau * print_r($array); 67*04fd306cSNickeau * </code> 68*04fd306cSNickeau * 69*04fd306cSNickeau * @param string $input A string containing YAML 70*04fd306cSNickeau * @param int $flags A bit field of PARSE_* constants to customize the YAML parser behavior 71*04fd306cSNickeau * 72*04fd306cSNickeau * @return mixed 73*04fd306cSNickeau * 74*04fd306cSNickeau * @throws ParseException If the YAML is not valid 75*04fd306cSNickeau */ 76*04fd306cSNickeau public static function parse(string $input, int $flags = 0) 77*04fd306cSNickeau { 78*04fd306cSNickeau $yaml = new Parser(); 79*04fd306cSNickeau 80*04fd306cSNickeau return $yaml->parse($input, $flags); 81*04fd306cSNickeau } 82*04fd306cSNickeau 83*04fd306cSNickeau /** 84*04fd306cSNickeau * Dumps a PHP value to a YAML string. 85*04fd306cSNickeau * 86*04fd306cSNickeau * The dump method, when supplied with an array, will do its best 87*04fd306cSNickeau * to convert the array into friendly YAML. 88*04fd306cSNickeau * 89*04fd306cSNickeau * @param mixed $input The PHP value 90*04fd306cSNickeau * @param int $inline The level where you switch to inline YAML 91*04fd306cSNickeau * @param int $indent The amount of spaces to use for indentation of nested nodes 92*04fd306cSNickeau * @param int $flags A bit field of DUMP_* constants to customize the dumped YAML string 93*04fd306cSNickeau */ 94*04fd306cSNickeau public static function dump($input, int $inline = 2, int $indent = 4, int $flags = 0): string 95*04fd306cSNickeau { 96*04fd306cSNickeau $yaml = new Dumper($indent); 97*04fd306cSNickeau 98*04fd306cSNickeau return $yaml->dump($input, $inline, 0, $flags); 99*04fd306cSNickeau } 100*04fd306cSNickeau} 101