PHP (5.4)中有没有什么函数可以将特征用作数组或类似的函数:
class myClass extends movingThings {
use bikes, tanks;
__construct() {
echo 'I\'m using the two traits:' . ????; // bikes, tanks
}
}
发布于 2014-03-07 20:37:26
要轻松获取使用的特征,可以调用class_uses()
$usedTraits = class_uses(MyClass);
// or
$usedTraits = class_uses($myObject);
一般建议
在检查可用的功能时,我通常建议使用interfaces
。要向界面添加默认功能,您可以使用traits
。这样,您还可以从类型提示中受益。
通过实现接口来强制具有功能的对象,然后使用特征来实现该接口的默认代码。
class MyClass
implements SomeInterface
{
use SomeTrait;
}
然后你可以通过以下方式检查界面:
$myObject = new MyClass();
if ($myObject instanceof SomeInterface) {
//...
}
并且仍然使用类型提示;
function someFunction( SomeInterface $object )
{
//...
}
发布于 2012-11-30 03:43:52
您可以使用ReflectionClass自己编写它
$rc = new ReflectionClass('myClass');
$count = count($rc->getTraits());
发布于 2015-11-17 21:19:14
就我的2美分=)
in_array( "CLASS_NAME", class_uses($model) )
或使用PHP > 5.6
in_array( CLASS_NAME::class, class_uses($model) )
https://stackoverflow.com/questions/13633346
复制相似问题