N°8834 - Add compatibility with PHP 8.4 (#819)

* N°8834 - Add compatibility with PHP 8.4

* Rollback of scssphp/scssphp version upgrade due to compilation error
This commit is contained in:
Lenaick
2026-02-26 10:36:32 +01:00
committed by GitHub
parent d4821b7edc
commit fc967c06ce
961 changed files with 12298 additions and 7130 deletions

View File

@@ -12,7 +12,6 @@
namespace Symfony\Component\DependencyInjection\Argument;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
use Symfony\Component\DependencyInjection\Reference;
@@ -36,42 +35,42 @@ class LazyClosure
public function __get(mixed $name): mixed
{
if ('service' !== $name) {
throw new InvalidArgumentException(sprintf('Cannot read property "%s" from a lazy closure.', $name));
throw new InvalidArgumentException(\sprintf('Cannot read property "%s" from a lazy closure.', $name));
}
if (isset($this->initializer)) {
$this->service = ($this->initializer)();
if (\is_string($service = ($this->initializer)())) {
$service = (new \ReflectionClass($service))->newInstanceWithoutConstructor();
}
$this->service = $service;
unset($this->initializer);
}
return $this->service;
}
public static function getCode(string $initializer, array $callable, Definition $definition, ContainerBuilder $container, ?string $id): string
public static function getCode(string $initializer, array $callable, string $class, ContainerBuilder $container, ?string $id): string
{
$method = $callable[1];
$asClosure = 'Closure' === ($definition->getClass() ?: 'Closure');
if ($asClosure) {
if ($asClosure = 'Closure' === $class) {
$class = ($callable[0] instanceof Reference ? $container->findDefinition($callable[0]) : $callable[0])->getClass();
} else {
$class = $definition->getClass();
}
$r = $container->getReflectionClass($class);
if (null !== $id) {
$id = sprintf(' for service "%s"', $id);
$id = \sprintf(' for service "%s"', $id);
}
if (!$asClosure) {
$id = str_replace('%', '%%', (string) $id);
if (!$r || !$r->isInterface()) {
throw new RuntimeException(sprintf("Cannot create adapter{$id} because \"%s\" is not an interface.", $class));
throw new RuntimeException(\sprintf("Cannot create adapter{$id} because \"%s\" is not an interface.", $class));
}
if (1 !== \count($method = $r->getMethods())) {
throw new RuntimeException(sprintf("Cannot create adapter{$id} because interface \"%s\" doesn't have exactly one method.", $class));
throw new RuntimeException(\sprintf("Cannot create adapter{$id} because interface \"%s\" doesn't have exactly one method.", $class));
}
$method = $method[0]->name;
} elseif (!$r || !$r->hasMethod($method)) {