読者です 読者をやめる 読者になる 読者になる

六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

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

プログラミング

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

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

www.infiniteloop.co.jp

要約すると、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();

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