Webinar Darkmira PHParty7 France - Présentation d'une des principales incompatibilités de la nouvelle version PHP7, l'uniformisation de la syntaxe des variables
2. Pourquoi ?
En fait, cela résout de nombreuses
incohérences sur la façon dont les expressions
sont évaluées.
Mais cela peut aussi causer des problèmes,
notamment de compréhension...
4. Uniform Variable Syntax
$foo () [‘bar’] () ;
$foo est une fonction retourne un array
[‘bar’] est un élément de cet array
[‘bar’] contient un callable
() execute le callable
5. Uniform Variable Syntax
Exemple 1
$obj1 = new StdClass();
$obj1->name = ‘Darth’;
$obj2 = new StdClass();
$obj2->name = ‘Vader’;
echo [$obj1, $obj2][0]->name;
https://3v4l.org/
6. Uniform Variable Syntax
Exemple 2
class luke { static $vs = 'vader'; }
class vader{ static $say; }
vader::$say = function ()
{ echo "I am your father"; };
$skywalker = 'luke';
($skywalker::$vs::$say)();
7. Uniform Variable Syntax
BC Breaks
Old New
$$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz']
$foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz']
$foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']()
Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()
8. Mode explicite
• variable-variables est peu utilisé
• variable-properties l’est plus
Si vous avez des difficultés, vous pouvez
utiliser des crochets (curly braces) pour vous
assurer le même comportement dans PHP 5.6
et PHP 7.