如何检查类的实例是否使用特征?我无法使用instanceof,因为Trait是不可实现的.
解决方法
您可以将
ReflectionObject与
getTraits或
getTraitNames功能一起使用:
trait test { public function hello() { echo "hello"; } } class A { use test; } function hasTrait($object,$traitName) { $reflection = new ReflectionObject($object); return in_array($traitName,$reflection->getTraitNames()); } $a = new A(); if(hasTrait($a,'test')) { echo "Object of class 'A' has 'test' trait \n"; }