// トレイトを定義する
trait T {
public static $value = 0;
}
assert([T::$value] === [0]);
// クラスAが定義され、トレイトがミックスインされる
class A {
use T; // A::$value = 0で束縛
}
assert([T::$value, A::$value] === [0, 0]);
// トレイトの状態を変える
T::$value = 1; // Aクラスには影響しない
assert([T::$value, A::$value] === [1, 0]);
// クラスBが定義され、トレイトがミックスインされる
class B {
use T; // B::$value = 1で束縛
}
assert([T::$value, A::$value, B::$value] === [1, 0, 1]);
// トレイトの状態をもとに戻す
T::$value = 0; // A,Bクラスともに影響しない
assert([T::$value, A::$value, B::$value] === [0, 0, 1]);
More than 5 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme