} class C5 { public static function __invoke() { static $x = 0; var_dump($x++); } } class D5 extends C5 { } $c = new C4(); $d = new D4(); $c(0, 1); $d(0, 1); call_user_func($c, 0, 1); call_user_func($d, 0, 1); C4::__invoke(0, 1); D4::__invoke(0, 1); $e = new E4(); $e(0, 1); $e(0, 1); call_user_func($e, 0, 1); E4::__invoke(0, 1); $c = new C5(); $d = new D5(); $c(); $d(); $c(); $d();
public function foo() { echo "B4::foo\n"; } } class C4 { private function foo() { echo "C4::foo\n"; } public static function test($obj) { $obj->foo(); } } C4::test(new B4()); class A5 { private function __construct() { } } class B5 extends A5 { public static function test() { return new A5(); } } B5::test();
echo "Inside " . __METHOD__ . "\n"; } } trait T4 { use Tx1, Tx2; use T2a, T2b, T3 { Tx1::k as kk; T2a::f insteadof T2b; } } class C4 { use T4; } $c4 = new C4(); echo "-------\n"; $c4->f(); echo "-------\n"; $c4->m1(); echo "-------\n"; $c4->k(); echo "-------\n"; $c4->m(); echo "===================== static properties =========================\n"; trait T5 { public static $prop; } class C5a {
function main4() { $obj = new C4(); $obj->foo("a", "b", "c", "d"); $fn = 'foo'; $obj->{$fn}("a", "b", "c", "d"); }
} function __get($var) { echo "C8::__get({$var})\n"; return $this->g($var); } function g($var) { echo "C8::g({$var})\n"; return $this->{$var}; } } $c1 = new C1(); $c1->f1(); var_dump($a1); $c1->f2(); $c1->f3(); $c2 = new C2(); $c2->f1(); $c3 = new C3(); $c3->f1(); $c4 = new C4(); $c4->f1(); $c5 = new C5(); $c5->f1(); $c6 = new C6(); $c6->f1(); $c7 = new C7(); $c7->f1(); $c8 = new C8(); $c8->f1();
function main4() { $fn = 'foo'; C4::foo("a", "b", "c", "d"); C4::$fn("a", "b", "c", "d"); }