如何在php类中获得使用的特征?一般性建议

2022-08-30 17:32:30

PHP (5.4) 中是否有任何函数可以将使用的特征作为数组或类似:

class myClass extends movingThings {
  use bikes, tanks;

  __construct() {
    echo 'I\'m using the two traits:' . ????; // bikes, tanks
  }
}

答案 1

要轻松获得使用的特征,您可以调用class_uses()

$usedTraits = class_uses(MyClass);
// or
$usedTraits = class_uses($myObject);

一般性建议

在检查可用功能时,我通常建议使用。要向界面添加默认功能,请使用 。这样,您还可以从类型提示中受益。interfacestraits

通过实现接口来强制对象具有功能,然后使用特征为该接口实现默认代码。

class MyClass 
    implements SomeInterface 
{
    use SomeTrait;
}

然后你可以检查接口;

$myObject = new MyClass();
if ($myObject instanceof SomeInterface) {
    //...
}

并且仍然使用类型提示;

function someFunction( SomeInterface $object )
{ 
    //...
}

答案 2

您可以使用反射类自己编写它

$rc = new ReflectionClass('myClass');
$count = count($rc->getTraits());

推荐