From dbe9456f770217e669bfd41eadc65a760efb3b2f Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Sun, 14 Apr 2024 10:15:06 +0200 Subject: [PATCH] Fix incompatibility with old PHP versions --- CHANGELOG | 2 +- doc/deprecated.rst | 8 ++++++++ src/Environment.php | 7 ++++++- src/Template.php | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7c6e293b3..21bf1278b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,7 @@ # 3.9.0 (2024-XX-XX) * Deprecate AbstractNodeVisitor - * Deprecate passing Template to Environment::resolveTemplate() and Template::loadTemplate() + * Deprecate passing Template to Environment::resolveTemplate(), Environment::load(), and Template::loadTemplate() * Add a new "yield" mode for output generation; Node implementations that use "echo" or "print" should use "yield" instead; all Node implementations should be flagged with `#[YieldReady]` once they've been made ready for "yield"; diff --git a/doc/deprecated.rst b/doc/deprecated.rst index b4cdf774d..4121d1905 100644 --- a/doc/deprecated.rst +++ b/doc/deprecated.rst @@ -23,3 +23,11 @@ Node Visitors * The ``Twig\NodeVisitor\AbstractNodeVisitor`` class is deprecated, implement the ``Twig\NodeVisitor\NodeVisitorInterface`` interface instead. + +Templates +--------- + +* Passing ``Twig\\Template`` instances to Twig public API is deprecated (like + in ``Environment::resolveTemplate()``, ``Environment::load()``, and + ``Template::loadTemplate()``); pass instances of ``Twig\\TemplateWrapper`` + instead. diff --git a/src/Environment.php b/src/Environment.php index 1e13a3c49..3422ca49f 100644 --- a/src/Environment.php +++ b/src/Environment.php @@ -327,6 +327,11 @@ class Environment if ($name instanceof TemplateWrapper) { return $name; } + if ($name instanceof Template) { + trigger_deprecation('twig/twig', '3.9', 'Passing a "%s" instance to "%s" is deprecated.', self::class, __METHOD__); + + return $name; + } return new TemplateWrapper($this, $this->loadTemplate($this->getTemplateClass($name), $name)); } @@ -448,7 +453,7 @@ class Environment * @throws LoaderError When none of the templates can be found * @throws SyntaxError When an error occurred during compilation */ - public function resolveTemplate(string|TemplateWrapper|Template|array $names): TemplateWrapper + public function resolveTemplate($names): TemplateWrapper { if (!\is_array($names)) { return $this->load($names); diff --git a/src/Template.php b/src/Template.php index 54527c250..f200a610f 100644 --- a/src/Template.php +++ b/src/Template.php @@ -253,7 +253,7 @@ abstract class Template * * @return self|TemplateWrapper */ - protected function loadTemplate(string|TemplateWrapper|self|array $template, $templateName = null, $line = null, $index = null) + protected function loadTemplate($template, $templateName = null, $line = null, $index = null) { try { if (\is_array($template)) {