class P { public static function Main() { if ($x) { function g() { echo "g1\n"; } class T { function f() { echo "T1::f\n"; } } } else { function g() { echo "g2\n"; } class T { function f() { echo "T2::f\n"; } } } $t = new T(); $t->f(); g(); } }
<?php class P { } class T { function f(P $p = NULL) { var_dump($p); echo "-\n"; } } $o = new T(); $o->f(new P()); $o->f(); $o->f(NULL);
<?php class V { const X = 10; } function &values() { static $VALUES = array('X' => V::X); return $VALUES; } function foo() { var_dump(values()['X']); } foo(); foo(); class T { public $var; function f() { echo $this->var - 3; } } $a = 33; $t = new T(); $t->var =& $a; $t->f(); $a = 10000; $t->f();