PHPにおけるOOPのトレイトの抽象メソッド
トレイトでは、いくつかのメソッドを抽象的に宣言することができます。この場合、そのトレイトを使用するクラスは、そのようなメソッドを実装する義務があります。なお、トレイトの抽象メソッドをプライベートにすることはできません。
例を見てみましょう。次のようなトレイトがあるとします:
<?php
trait TestTrait
{
public function method1()
{
return 1;
}
abstract public function method2();
}
?>
このトレイトが Test クラスで使用されているとします。トレイト内に抽象メソッドがあると、プログラマはクラス内でそれを実装する必要があり、そうしないとPHPエラーが発生します。
メソッド method2 を持つ Test クラスを作成してみましょう:
<?php
class Test
{
use TestTrait; // トレイトを使用
// 抽象メソッドを実装:
public function method2()
{
return 2;
}
}
new Test;
?>
私のトレイト TestTrait のコードと、私のクラス Test のコードをコピーしてください。クラスからメソッド method2 を削除してください。その実装がないとPHPエラーが発生することを確認してください。