traitsとは、PHP5.4で実装された複数のクラスに実装する共通メソッドを定義するための仕組み。Programming PHPを読んでもtraitsの使いどころがわからない。スーパークラスじゃダメなの?
web検索すると、疑問にズバリ答えてくれるブログが見つかった!
要約すると、traitsは「多重継承を実現するための仕組み」で、「デザインパターンなど、必ず共通で使う枠組みでソースのコピペをなくしたい時に使用」するものだそうだ。ここではSingletonを例にとって説明してくれている。
<?phptrait SingletonTrait{privatestatic$instance;privatefunction__construct() { }publicstaticfunctiongetInstance(){if(!isset(self::$instance)) {self::$instance=newself();}returnself::$instance;}}classSomeManager{// シングルトンパターンを利用するuseSingletonTrait;publicfunctionprocessSomething(){// ...}}// クラスの利用$mngr= SomeManager::getInstance();$mngr->processSomething();
なるほどね!ありがとうございます!