Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

PHPのtraitはinstanceofで確認できない

PHPではtraitというメソッドの固まりみたいなものをクラス内に差し込むことができる。
が、interfaceと違って、instanceofで特定のtraitが使用されているか判定することができないようだ。

traitの場合

<?php
trait MyTrait {}

class MyClass {
  use MyTrait;
}

$my_instance = new MyClass();
var_dump($my_instance instanceof MyTrait);
//=> bool(false)

interfaceの場合

<?php
interface MyInterface {}

class MyClass implements MyInterface {}

$my_instance = new MyClass();
var_dump($my_instance instanceof MyInterface);
//=> bool(true)