繁体   English   中英

如何获取构成特征的特征列表

[英]How to get list of traits which a trait is composed of

问题:是否有一种方法可以获取特征构成的特征列表? 作为参考,我指的是由traits组成的特征

场景:我有模型类UserAccountLead 我有特质叫PeopleImportableExportableValidatableImplicitAttributableAuditableListablePermitableSearchableEncryptableHashableCurrentableRelatableTriggerable 这三个类别均实现了People特质。

这种特点被称为People组成的AuditableListablePermitableSearchableEncryptableHashableCurrentableRelatableTriggerable

我正在尝试按特征筛选班级。 但是,当我尝试用特征Searchable过滤该特征时,该特征在模型之一中没有明确定义(而是它是组合特征People的一部分),但没有任何结果。

当前使用的方法:

我尝试使用PHP的class_uses和以下功能:

function getTraitsForClass($class)
{
    return array_keys((new \ReflectionClass($class))->getTraits());
}

生成要过滤的特征列表。 我在列表中获得了People特质,但没有得到Searchable特质。

附加信息:

我正在使用Laravel 5.7和PHP 7.1.23构建应用程序。

事实证明, ReflectionClass也可以在Traits上使用。 所以我将函数修改为:

function getTraitsForClass($something)
{
    $traits = array_keys((new \ReflectionClass($something))->getTraits());
    foreach ($traits as $trait) {
        $traits = array_merge($traits, getTraitsForClass($trait));
    }
    $traits = array_unique($traits);
    return $traits;
}

而且我能够获得性状的完整列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM