<?php
trait ATrait {
public function a(){
return 'Aa';
}
}
trait BTrait {
public function a(){
return 'Ba';
}
}
class C {
use ATrait{
a as aa;
}
use BTrait{
a as ba;
}
public function a() {
return static::aa() . static::ba();
}
}
$o = new C;
echo $o->a(), "\n";
class C1 {
use BTrait{
a as ba;
}
use ATrait{
a as aa;
}
public function a() {
return static::aa() . static::ba();
}
}
$o = new C1;
echo $o->a(), "\n";
class D {
use ATrait{
ATrait::a as aa;
}
use BTrait{
BTrait::a as ba;
}
public function a() {
return static::aa() . static::ba();
}
}
$o = new D;
echo $o->a(), "\n";
class E {
use ATrait{
ATrait::a as aa;
ATrait::a insteadof BTrait;
}
use BTrait{
BTrait::a as ba;
}
public function e() {
return static::aa() . static::ba();
}
}
$o = new E;
echo $o->e(), "\n";
class F {
use ATrait{
a as aa;
}
use BTrait{
a as ba;
}
public function f() {
return static::aa() . static::ba();
}
}
$o = new F;
echo $o->f(), "\n";
Fatal error: An alias was defined for method a(), which exists in both ATrait and BTrait. Use ATrait::a or BTrait::a to resolve the ambiguity in /in/g5HRH on line 15
Process exited with code 255.
AaAa
BaBa
AaBa
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; E has a deprecated constructor in /in/g5HRH on line 64
AaBa
Fatal error: Trait method a has not been applied, because there are collisions with other trait methods on F in /in/g5HRH on line 81
Process exited with code 255.
Output for 7.3.32 - 7.3.33
AaAa
BaBa
AaBa
AaBa
Fatal error: Trait method a has not been applied, because there are collisions with other trait methods on F in /in/g5HRH on line 81
Process exited with code 255.
Output for 5.6.0 - 5.6.40
AaAa
BaBa
AaBa
AaBa
Fatal error: Trait method a has not been applied, because there are collisions with other trait methods on F in /in/g5HRH on line 92
Process exited with code 255.