PHP、traitsってどう使うのさ?

traitsとは、PHP5.4で実装された複数のクラスに実装する共通メソッドを定義するための仕組み。Programming PHPを読んでもtraitsの使いどころがわからない。スーパークラスじゃダメなの?

web検索すると、疑問にズバリ答えてくれるブログが見つかった!

要約すると、traitsは「多重継承を実現するための仕組み」で、「デザインパターンなど、必ず共通で使う枠組みでソースのコピペをなくしたい時に使用」するものだそうだ。ここではSingletonを例にとって説明してくれている。

 

<?php
trait SingletonTrait
{
    private static $instance;
 
    private function __construct() { }
 
    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

class SomeManager
{
    // シングルトンパターンを利用する
    use SingletonTrait;
 
    public function processSomething()
    {
        // ...
    }
}
 
// クラスの利用
$mngr = SomeManager::getInstance();
$mngr->processSomething();

 なるほどね!ありがとうございます!


コメントを残す

メールアドレスが公開されることはありません。