<?php interface X { const A = 1; } class Y { const B = 2; } class Z extends Y implements X { function x() { print self::A; print self::B; print Z::A; print Z::B; print X::A; print Y::B; } } $z = new Z(); $z->x();
<?php trait T { private $x = 0; } class X { use T; } class Y extends X { use T; function x() { return ++$this->x; } } class Z extends Y { function z() { return ++$this->x; } } $a = new Z(); $a->x(); echo "DONE";
trait T { private $x = 0; } class X { use T; function x() { return ++$this->x; } } class Y extends X { use T; function y() { return ++$this->x; } } class Z extends Y { function z() { return ++$this->x; } } $a = new Z(); echo join(" ", array($a->x(), $a->x(), $a->y(), $a->y(), $a->z(), $a->z())), "\n";