3v4l.org

run code in 300+ PHP versions simultaneously
<?php trait T { private function a() { return "T/a\n"; } public function callAFromT() { return $this->a(); } } class X { use T; private function a() { return "X/a\n"; } public function callAFromX() { return $this->a(); } } class Y extends X { private function a() { return "Y/a\n"; } public function callAFromY() { return $this->a(); } } $y = new Y; echo $y->callAFromY(); // outputs "Y/a" echo $y->callAFromX(); // outputs "X/a" echo $y->callAFromT(); // expected: "T/a"; outputs "X/a";
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Y/a X/a X/a

preferences:
111.12 ms | 406 KiB | 5 Q