mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 20:06:31 +00:00
82 lines
2.4 KiB
Plaintext
82 lines
2.4 KiB
Plaintext
--TEST--
|
|
Twig supports the "=" operator (assignment)
|
|
--TEMPLATE--
|
|
{# stores #}
|
|
{% do b = 1 + 3 %}{{ b }}
|
|
{# stores and displays #}
|
|
{{ b = 1 + 3 }}{{ b }}
|
|
{# stores and returns #}
|
|
{% do (c = 4) ? 0 : -1 %}{{ c }}
|
|
{# = can be chained #}
|
|
{% do c = d = "a" %}{{ c }}{{ d }}
|
|
{% do a = (b = 4) + 5 %}{{ a }}{{ b }}
|
|
|
|
# Array destructuring
|
|
{% do [first, last] = ['Fabien', 'Potencier'] %}{{ first }} {{ last }}
|
|
{% do [a, b] = [b, a] %}{{ a }}{{ b }}
|
|
{% do [, second] = ['first', 'second'] %}{{ second }}
|
|
{% do [x, y, z] = ['one', 'two'] %}{{ x }} {{ y }} {{ z is same as(null) ? 'null' : z }}
|
|
|
|
# Object destructuring
|
|
{% do {name, email} = user %}{{ name }} {{ email }}
|
|
{% do {first_name, last_name} = user_map %}{{ first_name }} {{ last_name }}
|
|
{% do {name} = user_obj %}{{ name }}
|
|
|
|
# Array destructuring from a Traversable
|
|
{% do destructured = ([p, q] = pair_traversable) %}{{ p }} {{ q }} {{ pair_traversable.yielded }} {{ destructured is same as(pair_traversable) ? 'same' : 'different' }}
|
|
{% do [r, , t] = short_traversable %}{{ r }} {{ t is same as(null) ? 'null' : t }}
|
|
|
|
# Object destructuring with renaming
|
|
{% do {name: userName, email: userEmail} = user %}{{ userName }} {{ userEmail }}
|
|
{% do {first_name: first, last_name: last} = user_map %}{{ first }} {{ last }}
|
|
{% do {name: objName} = user_obj %}{{ objName }}
|
|
{% do {name: n1} = user %}{% do {name: n2} = user_obj %}{{ n1 }} {{ n2 }}
|
|
--DATA--
|
|
return [
|
|
'user' => (object)['name' => 'Fabien', 'email' => 'fabien@example.com'],
|
|
'user_map' => ['first_name' => 'Fabien', 'last_name' => 'Potencier'],
|
|
'user_obj' => new class {
|
|
public function getName() { return 'Fabien'; }
|
|
},
|
|
'null_obj' => null,
|
|
'pair_traversable' => new class implements IteratorAggregate {
|
|
public int $yielded = 0;
|
|
|
|
public function getIterator(): Traversable
|
|
{
|
|
foreach ([5 => 'Fabien', 8 => 'Potencier', 13 => 'Ignored'] as $key => $value) {
|
|
++$this->yielded;
|
|
yield $key => $value;
|
|
}
|
|
}
|
|
},
|
|
'short_traversable' => new ArrayIterator(['one']),
|
|
]
|
|
--EXPECT--
|
|
4
|
|
44
|
|
4
|
|
aa
|
|
94
|
|
|
|
# Array destructuring
|
|
Fabien Potencier
|
|
49
|
|
second
|
|
one two null
|
|
|
|
# Object destructuring
|
|
Fabien fabien@example.com
|
|
Fabien Potencier
|
|
Fabien
|
|
|
|
# Array destructuring from a Traversable
|
|
Fabien Potencier 2 same
|
|
one null
|
|
|
|
# Object destructuring with renaming
|
|
Fabien fabien@example.com
|
|
Fabien Potencier
|
|
Fabien
|
|
Fabien Fabien
|