首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在php-class中获取使用的特征?

如何在php-class中获取使用的特征?
EN

Stack Overflow用户
提问于 2012-11-30 03:37:18
回答 7查看 10.4K关注 0票数 24

PHP (5.4)中有没有什么函数可以将特征用作数组或类似的函数:

代码语言:javascript
复制
class myClass extends movingThings {
  use bikes, tanks;

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

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-03-07 20:37:26

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

代码语言:javascript
复制
$usedTraits = class_uses(MyClass);
// or
$usedTraits = class_uses($myObject);

一般建议

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

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

代码语言:javascript
复制
class MyClass 
    implements SomeInterface 
{
    use SomeTrait;
}

然后你可以通过以下方式检查界面:

代码语言:javascript
复制
$myObject = new MyClass();
if ($myObject instanceof SomeInterface) {
    //...
}

并且仍然使用类型提示;

代码语言:javascript
复制
function someFunction( SomeInterface $object )
{ 
    //...
}
票数 36
EN

Stack Overflow用户

发布于 2012-11-30 03:43:52

您可以使用ReflectionClass自己编写它

代码语言:javascript
复制
$rc = new ReflectionClass('myClass');
$count = count($rc->getTraits());
票数 12
EN

Stack Overflow用户

发布于 2015-11-17 21:19:14

就我的2美分=)

代码语言:javascript
复制
in_array( "CLASS_NAME", class_uses($model) ) 

或使用PHP > 5.6

代码语言:javascript
复制
in_array( CLASS_NAME::class, class_uses($model) )
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13633346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档