Deprecated: Return type of Symfony\Component\HttpFoundation\ParameterBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache on line 109
Deprecated: Return type of Symfony\Component\HttpFoundation\ParameterBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache on line 113
Deprecated: Return type of Symfony\Component\HttpFoundation\HeaderBag::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache on line 239
Deprecated: Return type of Symfony\Component\HttpFoundation\HeaderBag::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache on line 243
Deprecated: AppKernel implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/frocom1/public_html/dev.frocom.net/app/AppKernel.php on line 0
Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache on line 459
Deprecated: Symfony\Component\Config\Resource\FileResource implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/frocom1/public_html/dev.frocom.net/vendor/symfony/symfony/src/Symfony/Component/Config/Resource/FileResource.php on line 21
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier
*
* 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;
use Symfony\Component\Yaml\Exception\DumpException;
use Symfony\Component\Yaml\Unescaper;
use Symfony\Component\Yaml\Escaper;
/**
* Inline implements a YAML parser for simple YAML strings.
*
* @author Fabien Potencier
*/
class Inline
{
const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')';
// Constantes necesarias para la funcionalidad del método parse
const REGEX_DATE = '(?P[0-9][0-9][0-9][0-9])-(?P[0-9][0-9]?)'
. '-(?P[0-9][0-9]?)(?:(?:[Tt]|[ \t]+)(?P[0-9][0-9]?)'
. ':(?P[0-9][0-9]):(?P[0-9][0-9])'
. '(?:\.(?P[0-9]*))?(?:[ \t]*(?PZ|(?P[-+])'
. '(?P[0-9][0-9]?)(?::(?P[0-9][0-9]))?))?)?';
const PARSE_OBJECT = true;
const PARSE_OBJECT_FOR_MAP = 1;
const PARSE_OBJECT_FOR_SCALAR = 2;
const PARSE_EXPLICIT_OBJECT = 4;
const TAG_PREFIX = 'tag:yaml.org,2002:';
/**
* Converts a YAML string to a PHP value.
*
* @param string $value A YAML string
* @param bool $exceptionOnInvalidType
* @param bool $objectSupport
* @param array $context
*
* @return mixed A PHP value
*
* @throws ParseException
*/
public static function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, array $context = array())
{
// El error de "trim(): Passing null..." ocurre aquí si $value es null.
// PHP 8+ ya no permite pasar null a trim().
$value = trim((string) $value);
if ('' === $value) {
return '';
}
// is a quoted string?
if (preg_match('/^'.self::REGEX_QUOTED_STRING.'$/A', $value, $matches)) {
return self::parseQuotedScalar($matches[0]);
}
// is null?
if ('null' == strtolower($value) || '' == $value || '~' == $value) {
return null;
}
if (0 === strpos($value, '!str')) {
$value = (string) substr($value, 5);
} elseif (0 === strpos($value, '!bool')) {
$value = (bool) substr($value, 6);
} elseif (0 === strpos($value, '!int')) {
$value = (int) substr($value, 5);
} elseif (0 === strpos($value, '!float')) {
$value = (float) substr($value, 7);
} elseif (0 === strpos($value, '!array')) {
$value = (array) substr($value, 7);
} elseif (0 === strpos($value, '!')) {
if (0 === strpos($value, '!php/object:')) {
// PHP object unserialization
return unserialize(substr($value, 13));
} elseif ($objectSupport) {
// Tagged classes
// Skip the first character which is the !
$value = substr($value, 1);
$i = strpos($value, ' ');
if ($i === false) {
$class = $value;
$value = '';
} else {
$class = substr($value, 0, $i);
$value = substr($value, $i + 1);
}
if ($objectSupport === self::PARSE_OBJECT_FOR_MAP || $objectSupport === self::PARSE_OBJECT_FOR_SCALAR) {
return array(self::TAG_PREFIX.$class => self::parse($value, $exceptionOnInvalidType, self::PARSE_EXPLICIT_OBJECT));
}
// Fallback to empty object instance if value is empty
if (empty($value) && class_exists($class)) {
return new $class();
}
if (empty($value)) {
throw new ParseException(sprintf('The object "%s" is not supported.', $class));
}
}
}
// is a boolean?
if (preg_match('/^(true|false)$/i', $value, $matches)) {
return 'true' == strtolower($matches[0]);
}
// is an integer or a float?
if (is_numeric($value)) {
$is_float = (false !== strpos($value, '.') || false !== strpos($value, ',') || false !== strpos($value, 'e') || false !== strpos($value, '+'));
return $is_float ? (float) $value : (int) $value;
}
// is a list?
if (0 === strpos($value, '[') && ']' == substr($value, -1)) {
return self::parseSequence(substr($value, 1, -1), $exceptionOnInvalidType, $objectSupport, $context);
}
// is a map?
if (0 === strpos($value, '{') && '}' == substr($value, -1)) {
return self::parseMapping(substr($value, 1, -1), $exceptionOnInvalidType, $objectSupport, $context);
}
// is a date?
if (0 === strpos($value, '+') || preg_match('/^'.self::REGEX_DATE.'$/', $value)) {
// an unquoted string can be a date
if (false !== $instance = self::parseDate($value)) {
return $instance;
}
}
// is a constant?
if (preg_match('/^([a-zA-Z0-9\-_]+)::/', $value, $matches)) {
$constant = $matches[1].'::'.ltrim(substr($value, strlen($matches[1]) + 2), ' ');
if (defined($constant)) {
return constant($constant);
}
}
// is a PHP object?
if (preg_match('/^!php\/object:(.*)$/', $value, $matches)) {
return unserialize($matches[1]);
}
// unquoted string
$result = self::parseScalar($value, null, array('exceptionOnInvalidType' => $exceptionOnInvalidType, 'objectSupport' => $objectSupport, 'context' => $context));
if (null !== $result && false === $result) {
throw new ParseException(sprintf('Unable to parse "%s".', $value));
}
return $result;
}
/**
* Parses a quoted scalar.
*
* @param string $scalar
*
* @return string
*
* @throws ParseException
*/
public static function parseQuotedScalar($scalar)
{
if (preg_match('/^"(.+)"$/s', $scalar, $matches)) {
$unescaper = new Unescaper();
return $unescaper->unescapeDoubleQuotedString(stripcslashes($matches[1]));
}
if (preg_match('/^\'(.+)\'$/s', $scalar, $matches)) {
$unescaper = new Unescaper();
return $unescaper->unescapeSingleQuotedString($matches[1]);
}
throw new ParseException(sprintf('Unrecognized quoted scalar: %s', $scalar));
}
/**
* Parses a sequence (['foo', 'bar'] in YAML).
*
* @param string $sequence A YAML sequence
* @param bool $exceptionOnInvalidType
* @param bool $objectSupport
* @param array $context
*
* @return array A PHP array
*
* @throws ParseException
*/
public static function parseSequence($sequence, $exceptionOnInvalidType = false, $objectSupport = false, array $context = array())
{
$result = array();
$tokens = self::tokenize($sequence);
$is_first = true;
$context = array_merge($context, array('in_sequence' => true));
foreach ($tokens as $token) {
if ('\0' === $token) {
// empty entry
$result[] = null;
continue;
}
if ($is_first) {
$is_first = false;
} else {
if (',' != $token) {
// La línea y el near "%s" se eliminan porque no tenemos el contexto de línea en Inline
throw new ParseException(sprintf('Keys can only be "","" when parsing a sequence.'));
}
continue;
}
$result[] = self::parse($token, $exceptionOnInvalidType, $objectSupport, $context);
}
return $result;
}
/**
* Parses a mapping ({'foo': 'bar'} in YAML).
*
* @param string $mapping A YAML mapping
* @param bool $exceptionOnInvalidType
* @param bool $objectSupport
* @param array $context
*
* @return array A PHP array
*
* @throws ParseException
*/
public static function parseMapping($mapping, $exceptionOnInvalidType = false, $objectSupport = false, array $context = array())
{
$result = array();
$tokens = self::tokenize($mapping, true);
$context = array_merge($context, array('in_mapping' => true));
$is_key = true;
$key = null;
$value = null; // Inicializar $value
foreach ($tokens as $token) {
if ('\0' === $token) {
$token = null;
}
if ($is_key) {
$key = self::parse($token, $exceptionOnInvalidType, $objectSupport, $context);
$is_key = false;
} elseif (':' === $token) {
// Separador, no hacemos nada
} else {
$value = self::parse($token, $exceptionOnInvalidType, $objectSupport, $context);
$result[$key] = $value;
$is_key = true; // Esperar la siguiente clave
}
}
return $result;
}
/**
* Parses a literal scalar.
*
* @param string $scalar
* @param int|null $line
* @param array|null $context
*
* @return mixed
*/
public static function parseScalar($scalar, $line = null, array $context = null)
{
// El código original en Symfony aquí simplemente llama a parse(),
// pero necesitamos manejar el contexto que puede ser null desde
// la versión antigua de Parser.php.
$safeContext = $context ?? array();
// Estas claves se esperan en el array $context que es pasado desde Parser.php
$exceptionOnInvalidType = $safeContext['exceptionOnInvalidType'] ?? false;
$objectSupport = $safeContext['objectSupport'] ?? false;
$originalContext = $safeContext['context'] ?? array();
return self::parse($scalar, $exceptionOnInvalidType, $objectSupport, $originalContext);
}
/**
* Tokenizes a YAML sequence or mapping.
*
* @param string $sequence A YAML sequence
* @param bool $isMapping
*
* @return array A PHP array of tokens
*/
public static function tokenize($sequence, $isMapping = false)
{
// En una versión completa de Symfony, este método se encarga de dividir
// la secuencia o mapeo en tokens separados por comas.
// Como no tengo el código de este método, se deja un esqueleto simple
// para evitar un error fatal, pero la lógica de tokenización debe ser
// más compleja. Si este método no funciona, el error será aquí.
if (preg_match_all('/(,\s*|\s*:\s*|\s*'.self::REGEX_QUOTED_STRING.'|[^,\s:{}\[\]]+)/', $sequence, $matches)) {
$tokens = array();
foreach ($matches[0] as $match) {
$match = trim($match);
if (empty($match)) {
continue;
}
$tokens[] = $match;
}
return $tokens;
}
return array();
}
/**
* Parses a date.
*
* @param string $value A YAML date string
*
* @return mixed A PHP date value
*/
public static function parseDate($value)
{
if (preg_match('/^'.self::REGEX_DATE.'$/', $value, $matches)) {
// Implementación simplificada para evitar errores, el original usa más lógica de timezone
$date = $matches['year'].'-'.$matches['month'].'-'.$matches['day'];
if (isset($matches['hour'])) {
$date .= ' '.$matches['hour'].':'.$matches['minute'].':'.$matches['second'];
if (isset($matches['tz']) && $matches['tz']) {
$date .= ' '.$matches['tz'];
}
}
return strtotime($date);
}
return false;
}
/**
* Returns the YAML parser error message.
*
* @return string The YAML parser error message
*/
public static function getErrorMessage()
{
return 'Not implemented';
}
/**
* Returns the type of a given value.
*
* @param mixed $value The value to test
*
* @return string The type
*/
public static function getType($value)
{
return gettype($value);
}
}
Fatal error: Uncaught Error: Class "Symfony\Component\Yaml\Inline" not found in /home/frocom1/public_html/dev.frocom.net/vendor/symfony/symfony/src/Symfony/Component/Yaml/Parser.php:116
Stack trace:
#0 /home/frocom1/public_html/dev.frocom.net/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php(260): Symfony\Component\Yaml\Parser->parse('imports:\n - ...')
#1 /home/frocom1/public_html/dev.frocom.net/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php(44): Symfony\Component\DependencyInjection\Loader\YamlFileLoader->loadFile('/home/frocom1/p...')
#2 /home/frocom1/public_html/dev.frocom.net/vendor/symfony/symfony/src/Symfony/Component/Config/Loader/DelegatingLoader.php(52): Symfony\Component\DependencyInjection\Loader\YamlFileLoader->load('/home/frocom1/p...', NULL)
#3 /home/frocom1/public_html/dev.frocom.net/app/AppKernel.php(40): Symfony\Component\Config\Loader\DelegatingLoader->load('/home/frocom1/p...')
#4 /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache(2483): AppKernel->registerContainerConfiguration(Object(Symfony\Component\Config\Loader\DelegatingLoader))
#5 /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache(2435): Symfony\Component\HttpKernel\Kernel->buildContainer()
#6 /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache(2216): Symfony\Component\HttpKernel\Kernel->initializeContainer()
#7 /home/frocom1/public_html/dev.frocom.net/app/bootstrap.php.cache(2247): Symfony\Component\HttpKernel\Kernel->boot()
#8 /home/frocom1/public_html/dev.frocom.net/web/app.php(23): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#9 {main}
thrown in /home/frocom1/public_html/dev.frocom.net/vendor/symfony/symfony/src/Symfony/Component/Yaml/Parser.php on line 116