Ejemplo n.º 1
0
 /**
  * Dumps a given PHP variable to a YAML string.
  *
  * @param mixed $value The PHP variable to convert
  *
  * @return string The YAML string representing the PHP array
  *
  * @throws Exception When trying to dump PHP resource
  */
 public static function dump($value)
 {
     $trueValues = '1.1' == Yaml::getSpecVersion() ? array('true', 'on', '+', 'yes', 'y') : array('true');
     $falseValues = '1.1' == Yaml::getSpecVersion() ? array('false', 'off', '-', 'no', 'n') : array('false');
     switch (true) {
         case is_resource($value):
             throw new Exception('Unable to dump PHP resources in a YAML file.');
         case is_object($value):
             return '!!php/object:' . serialize($value);
         case is_array($value):
             return self::dumpArray($value);
         case null === $value:
             return 'null';
         case true === $value:
             return 'true';
         case false === $value:
             return 'false';
         case ctype_digit($value):
             return is_string($value) ? "'{$value}'" : (int) $value;
         case is_numeric($value):
             return is_infinite($value) ? str_ireplace('INF', '.Inf', strval($value)) : (is_string($value) ? "'{$value}'" : $value);
         case Escaper::requiresDoubleQuoting($value):
             return Escaper::escapeWithDoubleQuotes($value);
         case Escaper::requiresSingleQuoting($value):
             return Escaper::escapeWithSingleQuotes($value);
         case '' == $value:
             return "''";
         case preg_match(self::getTimestampRegex(), $value):
             return "'{$value}'";
         case in_array(strtolower($value), $trueValues):
             return "'{$value}'";
         case in_array(strtolower($value), $falseValues):
             return "'{$value}'";
         case in_array(strtolower($value), array('null', '~')):
             return "'{$value}'";
         default:
             return $value;
     }
 }
Ejemplo n.º 2
0
 /**
  * Dumps a given PHP variable to a YAML string
  *
  * @param mixed   $value                  The PHP variable to convert
  *
  * @return string The YAML string representing the PHP array
  */
 public static function dumpInline($value)
 {
     if (is_resource($value)) {
         return "null";
     } elseif (is_object($value)) {
         return "!!php/object:" . serialize($value);
     } elseif (is_array($value)) {
         return self::dumpInlineArray($value);
     } elseif ($value === null) {
         return "null";
     } elseif ($value === true) {
         return "true";
     } elseif ($value === false) {
         return "false";
     } elseif (ctype_digit($value)) {
         return is_string($value) ? "\"{$value}\"" : (int) $value;
     } elseif (is_numeric($value)) {
         $locale = setlocale(LC_NUMERIC, 0);
         if ($locale !== false) {
             setlocale(LC_NUMERIC, "C");
         }
         if (is_float($value)) {
             $repr = (string) $value;
             if (is_infinite($value)) {
                 $repr = str_ireplace("INF", ".Inf", $repr);
             } elseif (floor($value) == $value && $repr == $value) {
                 // Preserve float data type since storing a whole number will result in integer value.
                 $repr = "!!float {$repr}";
             }
         } elseif (is_string($value)) {
             $repr = "'{$value}'";
         } else {
             $repr = (string) $value;
         }
         if ($locale !== false) {
             setlocale(LC_NUMERIC, $locale);
         }
         return $repr;
     } elseif ($value === "") {
         return "''";
     } elseif (strstr($value, "\n") !== false) {
         return "|\n  " . preg_replace("/\\n/", "\n  ", $value);
     } elseif (Escaper::requiresDoubleQuoting($value)) {
         return Escaper::escapeWithDoubleQuotes($value);
     } elseif (Escaper::requiresSingleQuoting($value) || preg_match(Inline::getHexRegex(), $value) || preg_match(Inline::getTimestampRegex(), $value)) {
         return Escaper::escapeWithSingleQuotes($value);
     } else {
         return $value;
     }
 }