<?php trait Foo { public static function f() { echo __METHOD__ . "\n"; echo __TRAIT__ . "\n"; $a = new class { public static function f() { echo __METHOD__ . "\n"; echo __TRAIT__ . "\n"; } }; $a::f(); echo __METHOD__ . "\n"; echo __TRAIT__ . "\n"; } } Foo::f();
<?php class Foo { public static $x; function f() { $x = array(); Foo::$x =& $x; Foo::$x[0] = 12; echo $x[0] . "\n"; } } $y = new Foo(); $y->f(); echo "done\n";
function call_static($n) { for ($i = 0; $i < $n; ++$i) { Foo::f(); } }
var_dump(self::ZERO); } if (defined('parent::ZERO')) { var_dump(parent::ZERO); } $a = 'parent::ZERO'; if (defined($a)) { var_dump(parent::ZERO); } } } class Goo { const ZERO = Bar::ZERO; } $a = 'Foo::ZERO'; if (defined($a)) { var_dump(Foo::ZERO); } $a = 'Bar::ZERO'; if (defined($a)) { var_dump(Bar::ZERO); } $a = 'Goo::ZERO'; if (defined($a)) { var_dump(Goo::ZERO); } $obj = new Foo(); $obj->f(); $obj = new Bar(); $obj->f();