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();
なるほどね!ありがとうございます!