Input:
$var = $foo->bzr_{1};
$var = $foo->bzr_{'string'};
$var = $foo->bzr_{$baz};
$var = $foo->bzr_{$baz->foo};
$var = $foo->bzr_{$var ? 'one' : 'two'};
Parsed as encapsed with offset, but it is just offsetlookup with curly brackets
Should be parse as:
$var = $foo->bzr_[1];
$var = $foo->bzr_['string'];
$var = $foo->bzr_[$baz];
$var = $foo->bzr_[$baz->foo];
$var = $foo->bzr_[$var ? 'one' : 'two'];
Very very high priority
/cc @ichiriac can you help me with this?
not sure about this :
$var = $foo->bzr_{$var ? 'one' : 'two'};
// !=
$var = $foo->bzr_[$var ? 'one' : 'two'];
// lets say var is true :
$foo->bzr_{$var ? 'one' : 'two'} == $foo->bzr_one != $foo->bzr_['one'];
Can you confirm ?
It is same code, look
$var = true;
$foo = new class {
var $bzr_ = ['one' => 'foo'];
};
echo $foo->bzr_{$var ? 'one' : 'two'};
echo $foo->bzr_[$var ? 'one' : 'two'];
confirmed, I'll make a fix, I'll need a curly property on offset node in order to keep track if it was from a { or from a [
@ichiriac i will send a fix https://github.com/glayzzle/php-parser/pull/377
We can implement curly prperty in future, it is already deprecated, and rarely used
thanks
Most helpful comment
@ichiriac i will send a fix https://github.com/glayzzle/php-parser/pull/377