public static final function isX() { if (!isset(X::$x)) { X::$x = true; } return X::$x ? 1 : 0; }
function y() { return new X(); } } function b() { return new X(); } $y = "x"; $z = "y"; $x = new X(); $x->x = new X(); $x->x; $x->{$y}; $x->x(); $x->{$y}(); $x->{${$z}}; $x->x->x; $x->{$y}->{$y}; $x->y()->x(); $x->{$z}()->{$y}(); $x->a[3]; $x->a[3](); // Precedence inversion $x->a[3]()->a[3]; // Precedence inversion $x->a[3]()->a[3](); // Precedence inversion (twice) $x->{2 + 3}; // $x->{2 + 3}(); // moved to unsupported