Commit Graph

7365 Commits

Author SHA1 Message Date
HypeMC d56e8e2dba Support short-circuiting in null-safe operator chains 2026-02-06 22:36:57 +01:00
Fabien Potencier 87848155a5 minor #4749 Fix null-safe operator test (HypeMC)
This PR was merged into the 3.x branch.

Discussion
----------

Fix null-safe operator test

Noticed this while working on #4748.

Without `strict_variables`, the tests always pass, even when the null-safe operator is not used.

Commits
-------

a16ac6bd35 Fix null-safe operator test
2026-01-27 11:37:59 +01:00
HypeMC a16ac6bd35 Fix null-safe operator test 2026-01-25 04:57:19 +01:00
Fabien Potencier 111b867703 Bump version 2026-01-23 22:27:43 +01:00
Fabien Potencier a64dc5d2cc Prepare the release v3.23.0 2026-01-23 22:00:41 +01:00
Fabien Potencier b0c42a9739 Update CHANGELOG 2026-01-23 22:00:23 +01:00
Fabien Potencier b609ae9d0d feature #4744 Add support for object and mapping destructuring (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Add support for object and mapping destructuring

Refs https://github.com/twigphp/Twig/issues/3399

Commits
-------

8a0f8acbdf Add support for object and mapping destructuring
2026-01-23 12:57:17 +01:00
Fabien Potencier 8a0f8acbdf Add support for object and mapping destructuring 2026-01-21 13:21:14 +01:00
Fabien Potencier 76c404ec67 Rename classes 2026-01-21 13:14:16 +01:00
Fabien Potencier d784400fb2 feature #4742 Assignment operator array destructuring (fabpot)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Assignment operator array destructuring

Follow-up to the introduction of the new = operator, array destructuring.
Refs #3399

Commits
-------

bb99af3b39 Assignment operator array destructuring
2026-01-21 08:46:31 +01:00
Fabien Potencier bb99af3b39 Assignment operator array destructuring 2026-01-21 08:46:28 +01:00
Fabien Potencier dfeb162464 Fix doc notes 2026-01-21 08:36:53 +01:00
Fabien Potencier 85ccfb10c2 Fix doc notes 2026-01-21 08:34:47 +01:00
Fabien Potencier be1797da0c feature #4735 Add the = assignment operator (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Add the = assignment operator

Commits
-------

bfbbef05f2 Add the = assignment operator
2026-01-19 21:23:20 +01:00
Fabien Potencier bfbbef05f2 Add the = assignment operator 2026-01-19 16:39:57 +01:00
Fabien Potencier 820eed38a1 minor #4741 Fix grammar and spelling mistakes in documentation (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix grammar and spelling mistakes in documentation

Commits
-------

77cd2fd9f7 Fix grammar and spelling mistakes in documentation
2026-01-17 22:38:28 +01:00
Fabien Potencier 77cd2fd9f7 Fix grammar and spelling mistakes in documentation 2026-01-17 22:34:06 +01:00
Fabien Potencier c02aa11d0c minor #4740 Tweak null-safe operator implementation (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Tweak null-safe operator implementation

Follow-up for #4717

Commits
-------

6904954165 Tweak null-safe operator implementation
2026-01-17 15:14:24 +01:00
Fabien Potencier 6904954165 Tweak null-safe operator implementation 2026-01-17 15:11:37 +01:00
Fabien Potencier b1b2a0923f feature #4717 Add null-safe operator (felds)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Add null-safe operator

Adds native support for Twig’s null-safe `?.` operator so templates can traverse objects and arrays without defensive plumbing: `{{ user?.address?.city }}` now renders the value when present and stays silent when any hop is `null`.

`?.` reuses the existing `GetAttrExpression` operator, so it should have otherwise the same precedence and behavior as `.`.

Usage cases can be found in the tests:
https://github.com/twigphp/Twig/blob/7d98d45f58df040f41a81f7f8d4cce6c42be781e/tests/ExpressionParserTest.php#L304-L343

Tests cover both the rendered output and the generated PHP.

Let me know if any tests are missing or if the implementation should be done any other way.

Commits
-------

263c04fd1f Add null-safe operator
2026-01-17 14:57:55 +01:00
Felds Liscia 263c04fd1f Add null-safe operator 2026-01-17 14:57:47 +01:00
Fabien Potencier 2bddfddb7d minor #4737 Update u.rst to clarify truncate method's third argument behavior (Always-Victorious)
This PR was merged into the 3.x branch.

Discussion
----------

Update u.rst to clarify truncate method's third argument behavior

Current wording "to preserve whole words" suggests setting the argument to ``true`` preserves words. However, the parameter is ``$cut`` (defaults to ``true`` for cutting at exact length), and ``false`` is required to preserve whole words.

Commits
-------

28c2606be7 Update u.rst to clarify truncate method's third argument behavior
2026-01-17 10:27:09 +01:00
Fabien Potencier bd4b47e38c minor #4739 Fix documentation for getOperators() (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix documentation for getOperators()

Closes #4710

Commits
-------

ae51f93f70 Fix documentation for getOperators()
2026-01-17 10:21:12 +01:00
Fabien Potencier ae51f93f70 Fix documentation for getOperators() 2026-01-17 10:19:56 +01:00
Fabien Potencier 141e984c3e minor #4738 bump version (xabbuh)
This PR was merged into the 3.x branch.

Discussion
----------

bump version

#4736 added new operators thus require the minor version to be increased

Commits
-------

55cb67f87d bump version
2026-01-16 13:48:36 +01:00
Christian Flothmann 55cb67f87d bump version 2026-01-16 11:26:26 +01:00
Always-Victorious 28c2606be7 Update u.rst to clarify truncate method's third argument behavior
Current wording "to preserve whole words" suggests setting the argument to ``true`` preserves words. However, the parameter is ``$cut`` (defaults to ``true`` for cutting at exact length), and ``false`` is required to preserve whole words.
2026-01-15 15:43:42 +01:00
Fabien Potencier 94abd1c39b feature #4736 Add === and !== operators (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Add === and !== operators

Commits
-------

94c8bdd6a6 Add === and !== operators
2026-01-14 22:27:11 +01:00
Fabien Potencier 3ef425879d minor #4726 Enhance enum.rst with dynamic case example (Kocal)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Enhance enum.rst with dynamic case example

Added example for dynamic enum case display.

Commits
-------

bcc5ffc301 Enhance enum.rst with dynamic case example
2026-01-14 22:26:14 +01:00
Hugo Alliaume bcc5ffc301 Enhance enum.rst with dynamic case example 2026-01-14 22:26:11 +01:00
Fabien Potencier 94c8bdd6a6 Add === and !== operators 2026-01-14 09:58:48 +01:00
Fabien Potencier 0b1ef6cda0 minor #4734 Update extends.rst (MAHADEV-J)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Update extends.rst

Semantically correct HTML elements instead of `<div>`itis

Commits
-------

5b63d90bfb Update extends.rst
2026-01-14 08:47:34 +01:00
MAHADEV-J 5b63d90bfb Update extends.rst 2026-01-14 08:47:31 +01:00
Fabien Potencier 2d741f9a16 bug #4731 Fix spread operator behavior (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix spread operator behavior

Closes #4637

Commits
-------

2376bbaf3e Fix spread operator behavior
2026-01-13 10:14:41 +01:00
Fabien Potencier c034e0ba76 minor #4732 Fix deprecations (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix deprecations

Commits
-------

8391928896 Fix deprecations
2026-01-12 10:13:47 +01:00
Fabien Potencier 8391928896 Fix deprecations 2026-01-12 09:52:14 +01:00
Fabien Potencier 2376bbaf3e Fix spread operator behavior 2026-01-12 08:54:38 +01:00
Fabien Potencier 92f5098ad5 minor #4727 Fix CHANGELOG (usarise)
This PR was merged into the 3.x branch.

Discussion
----------

Fix CHANGELOG

Commit [Support for invoking closures](https://github.com/twigphp/Twig/commit/918f52e818f7c56e90ec462ae90b230da244a7ed) was added after release 3.17.1 https://github.com/twigphp/Twig/commits/v3.18.0

Commits
-------

97ff597b8a Fix CHANGELOG
2026-01-09 18:53:33 +01:00
Fabien Potencier a7436995d4 minor #4730 Fix intl-extra tests (Jean-Beru)
This PR was merged into the 3.x branch.

Discussion
----------

Fix intl-extra tests

Fix CI since `Scripts::getNames()` returns 4 new values. It just tests if the value is an array to limit maintenance on future updates.

Commits
-------

683adc550f Fix intl-extra tests
2026-01-08 19:56:46 +01:00
hubert.lenoir 683adc550f Fix intl-extra tests 2026-01-08 18:09:48 +01:00
Fabien Potencier 90acdc54f6 minor #4729 Fix tiny typo in CI step name (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

Fix tiny typo in CI step name

Just a nano-typo there in a step name

`symfony/translation-contract`+`s`

Commits
-------

949f351458 Fix tiny typo in CI workflow label
2026-01-06 08:05:11 +01:00
Simon André 949f351458 Fix tiny typo in CI workflow label
Just a nano-typo there

"symfony/translation-contract" -> "symfony/translation-contract**s**"
2026-01-05 22:50:27 +01:00
Fabien Potencier 4537dff30b Fix typo 2026-01-05 21:37:31 +01:00
Fabien Potencier 118a3a741e bug #4728 Fix opcache preload warning for unlinked anonymous class (OndraM)
This PR was merged into the 3.x branch.

Discussion
----------

Fix opcache preload warning for unlinked anonymous class

This fixes PHP opcache preload warning, caused by https://github.com/php/php-src/issues/10131 .  The warning is now produced when the preload is initiated.

> Can't preload unlinked class Twig\ExpressionParser\Infix\BinaryOperatorExpressionParser@anonymous: Unknown parent Twig\ExpressionParser\Infix\BinaryOperatorExpressionParser

This started with Twig 3.21, when the anonymous class started to be used in ExtensionSet.

This is a similar woraround as is already used in a TwigBridge, as suggested by `@nicolas`-grekas here https://github.com/symfony/symfony/pull/38533
Also similar fix is in API platform: https://github.com/api-platform/core/pull/3827

Commits
-------

86997d1bef Fix opcache preload warning for unlinked anonymous class
2026-01-05 21:36:53 +01:00
Ondřej Machulda 86997d1bef Fix opcache preload warning for unlinked anonymous class 2026-01-05 19:11:58 +01:00
usarise 97ff597b8a Fix CHANGELOG 2025-12-26 21:33:38 +07:00
Fabien Potencier 6e38bec2ee minor #4718 Add .gitignore & .gitattributes to all .gitattributes (jmsche)
This PR was merged into the 3.x branch.

Discussion
----------

Add .gitignore & .gitattributes to all .gitattributes

Commits
-------

ff327e4163 Add .gitignore & .gitattributes to all .gitattributes
2025-12-18 21:46:15 +01:00
Fabien Potencier aa8635647f Bump version 2025-12-14 12:29:52 +01:00
Fabien Potencier 946ddeafa3 Prepare the 3.22.2 release v3.22.2 2025-12-14 12:28:47 +01:00
Fabien Potencier eca0d9c7b9 Update CHANGELOG 2025-12-14 12:27:39 +01:00