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

Perl日記

PerlとかRubyとかPHPとかPythonとか

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)