hack-如何检查实例使用特征的方法



如何检查类的实例是否使用特质?我不能使用 instanceof,因为特征是不可能的。

hack是一组超级PHP(也是一个子集,鉴于某些遗留物已被删除),因此可以使用大多数本机功能。

话虽如此,您拥有class_uses()函数,可以做您想要的。

这是一个简化的用例:

if (in_array(FooBar::class, class_uses($object))) {
    // Do something if $object is using FooBar trait
}

您可以使用getTraits或getTraitnames函数使用ReflectionObject:

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";
}

相关内容

  • 没有找到相关文章

最新更新