From ac756bf39e646b4e130fad058d10a0228dbd9779 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Thu, 17 Jan 2013 09:31:37 +0100 Subject: [PATCH] added a way to enable/disable PHP support when parsing a YAML input via Yaml::parse() PHP support when parsing a file has been disabled by default. If you do need PHP support when parsing a YAML file, enable it via: Yaml::setPhpParsing(true); As of Symfony 2.1, PHP support is disabled by default, and support will be removed in Symfony 2.3. --- src/Symfony/Component/Yaml/Yaml.php | 73 ++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 12 deletions(-) diff --git a/src/Symfony/Component/Yaml/Yaml.php b/src/Symfony/Component/Yaml/Yaml.php index cd5310f24e..f5e3a0e9b4 100644 --- a/src/Symfony/Component/Yaml/Yaml.php +++ b/src/Symfony/Component/Yaml/Yaml.php @@ -22,6 +22,53 @@ use Symfony\Component\Yaml\Exception\ParseException; */ class Yaml { + /** + * Be warned that PHP support will be removed in Symfony 2.3. + * + * @deprecated Deprecated since version 2.0, to be removed in 2.3. + */ + static public $enablePhpParsing = true; + + /** + * Enables PHP support when parsing YAML files. + * + * Be warned that PHP support will be removed in Symfony 2.3. + * + * @deprecated Deprecated since version 2.0, to be removed in 2.3. + */ + public static function enablePhpParsing() + { + self::$enablePhpParsing = true; + } + + /** + * Sets the PHP support flag when parsing YAML files. + * + * Be warned that PHP support will be removed in Symfony 2.3. + * + * @param Boolean $boolean true if PHP parsing support is enabled, false otherwise + * + * @deprecated Deprecated since version 2.0, to be removed in 2.3. + */ + public static function setPhpParsing($boolean) + { + self::$enablePhpParsing = (Boolean) $boolean; + } + + /** + * Checks if PHP support is enabled when parsing YAML files. + * + * Be warned that PHP support will be removed in Symfony 2.3. + * + * @return Boolean true if PHP parsing support is enabled, false otherwise + * + * @deprecated Deprecated since version 2.0, to be removed in 2.3. + */ + public static function supportsPhpParsing() + { + return self::$enablePhpParsing; + } + /** * Parses YAML into a PHP array. * @@ -44,27 +91,29 @@ class Yaml */ public static function parse($input) { - $file = ''; - // if input is a file, process it + $file = ''; if (strpos($input, "\n") === false && is_file($input)) { if (false === is_readable($input)) { throw new ParseException(sprintf('Unable to parse "%s" as the file is not readable.', $input)); } $file = $input; + if (self::$enablePhpParsing) { + ob_start(); + $retval = include($file); + $content = ob_get_clean(); - ob_start(); - $retval = include($input); - $content = ob_get_clean(); + // if an array is returned by the config file assume it's in plain php form else in YAML + $input = is_array($retval) ? $retval : $content; - // if an array is returned by the config file assume it's in plain php form else in YAML - $input = is_array($retval) ? $retval : $content; - } - - // if an array is returned by the config file assume it's in plain php form else in YAML - if (is_array($input)) { - return $input; + // if an array is returned by the config file assume it's in plain php form else in YAML + if (is_array($input)) { + return $input; + } + } else { + $input = file_get_contents($file); + } } $yaml = new Parser();