uniform variable syntax
TRANSCRIPT
Uniform Variable SyntaxWebinar PHParty7 France - 28/11/15
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...
Uniform Variable Syntax
$foo->bar () ();
$foo est un objectbar() est une function qui retourne un callableLe callable exécute
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
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/
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)();
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']()
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.