<?php
trait T
{
static $arr = [];
public static function a()
{
self::$arr[] = 'Tx';
static::$arr[] = 'Ty';
}
}
class C
{
use T;
public static function b()
{
self::$arr[] = 'Cx';
static::$arr[] = 'Cy';
}
}
class D
{
use T;
public static function b()
{
self::$arr[] = 'Dx';
static::$arr[] = 'Dy';
}
}
T::a(); // make no sense
C::a();
C::b();
D::a();
D::b();
assert(C::$arr === ['Tx', 'Ty', 'Cx', 'Cy']);
assert(D::$arr === ['Tx', 'Ty', 'Dx', 'Dy']);
T::a(); // make no sense
assert(C::$arr === ['Tx', 'Ty', 'Cx', 'Cy']);
assert(D::$arr === ['Tx', 'Ty', 'Dx', 'Dy']);