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

@@ -157,7 +157,7 @@ class Configuration implements ConfigurationInterface
->normalizeKeys(false)
->useAttributeAsKey('paths')
->beforeNormalization()
->always()
->ifArray()
->then(function ($paths) {
$normalized = [];
foreach ($paths as $path => $namespace) {
@@ -221,7 +221,7 @@ class Configuration implements ConfigurationInterface
->arrayNode('mailer')
->children()
->scalarNode('html_to_text_converter')
->info(sprintf('A service implementing the "%s"', HtmlToTextConverterInterface::class))
->info(\sprintf('A service implementing the "%s"', HtmlToTextConverterInterface::class))
->defaultNull()
->end()
->end()

View File

@@ -25,6 +25,7 @@ use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Translation\LocaleSwitcher;
use Symfony\Component\Translation\Translator;
use Symfony\Contracts\Service\ResetInterface;
use Twig\Environment;
use Twig\Extension\ExtensionInterface;
use Twig\Extension\RuntimeExtensionInterface;
use Twig\Loader\LoaderInterface;
@@ -45,6 +46,10 @@ class TwigExtension extends Extension
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('twig.php');
if (method_exists(Environment::class, 'resetGlobals')) {
$container->getDefinition('twig')->addTag('kernel.reset', ['method' => 'resetGlobals']);
}
if ($container::willBeAvailable('symfony/form', Form::class, ['symfony/twig-bundle'])) {
$loader->load('form.php');

View File

@@ -38,6 +38,7 @@ use Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfig
use Symfony\Bundle\TwigBundle\TemplateIterator;
use Twig\Cache\FilesystemCache;
use Twig\Environment;
use Twig\ExpressionParser\Infix\BinaryOperatorExpressionParser;
use Twig\Extension\CoreExtension;
use Twig\Extension\DebugExtension;
use Twig\Extension\EscaperExtension;
@@ -63,6 +64,7 @@ return static function (ContainerConfigurator $container) {
->tag('container.preload', ['class' => EscaperExtension::class])
->tag('container.preload', ['class' => OptimizerExtension::class])
->tag('container.preload', ['class' => StagingExtension::class])
->tag('container.preload', ['class' => BinaryOperatorExpressionParser::class])
->tag('container.preload', ['class' => ExtensionSet::class])
->tag('container.preload', ['class' => Template::class])
->tag('container.preload', ['class' => TemplateWrapper::class])

View File

@@ -36,7 +36,7 @@ class TemplateIterator implements \IteratorAggregate
* @param string|null $defaultPath The directory where global templates can be stored
* @param string[] $namePatterns Pattern of file names
*/
public function __construct(KernelInterface $kernel, array $paths = [], string $defaultPath = null, array $namePatterns = [])
public function __construct(KernelInterface $kernel, array $paths = [], ?string $defaultPath = null, array $namePatterns = [])
{
$this->kernel = $kernel;
$this->paths = $paths;
@@ -64,6 +64,12 @@ class TemplateIterator implements \IteratorAggregate
if (null !== $this->defaultPath) {
$templates[] = $this->findTemplatesInDirectory($this->defaultPath.'/bundles/'.$bundle->getName(), $name);
}
/*
* The bundle's own templates are also registered with the "!" prefix namespace - this matches
* @see \Symfony\Bundle\TwigBundle\DependencyInjection\TwigExtension::load()
*/
$templates[] = $this->findTemplatesInDirectory($bundleTemplatesDir, '!'.$name);
}
foreach ($this->paths as $dir => $namespace) {
@@ -78,7 +84,7 @@ class TemplateIterator implements \IteratorAggregate
*
* @return string[]
*/
private function findTemplatesInDirectory(string $dir, string $namespace = null, array $excludeDirs = []): array
private function findTemplatesInDirectory(string $dir, ?string $namespace = null, array $excludeDirs = []): array
{
if (!is_dir($dir)) {
return [];