{ echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } } $t = new Talker(); $t->smallTalk(); $t->bigTalk(); $t->talk();
$m = $n - 1; $this->bigTalk($m); } } trait B { public function smallTalk() { echo "b\n"; } public function bigTalk($n) { if ($n == 0) { return; } echo "B{$n}\n"; $this->bigTalk($n - 1); } } class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as bTalk; } } $talker = new Talker(); $talker->smallTalk(); $talker->bigTalk(1); $talker->bTalk(2);
public function smallTalk() { echo 'b' . "\n"; } public function bigTalk() { echo 'B' . "\n"; } } class Talker { use A, B { A::smallTalk insteadof B; B::bigTalk insteadof A; } } class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } } $oAT = new Aliased_Talker(); echo $oAT->bigTalk(); echo $oAT->smallTalk(); $oT = new Talker(); echo $oT->smallTalk(); echo $oT->bigTalk();
B::smallTalk insteadof A; A::bigTalk insteadof B; } } class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } } $a = new Talker(); $a->smallTalk(); // expecting 'b' $a->bigTalk(); //expecting 'A' echo PHP_EOL; $a = new Aliased_Talker(); $a->smallTalk(); // expecting 'b' $a->bigTalk(); // expecting 'A' $a->talk(); // expecting 'B' echo PHP_EOL; trait HelloWorld { public function sayHello() { echo 'Hello World!';