[英]How to get list of traits which a trait is composed of
问题:是否有一种方法可以获取特征构成的特征列表? 作为参考,我指的是由traits组成的特征 。
场景:我有模型类User
, Account
和Lead
。 我有特质叫People
, Importable
, Exportable
, Validatable
, ImplicitAttributable
, Auditable
, Listable
, Permitable
, Searchable
, Encryptable
, Hashable
, Currentable
, Relatable
和Triggerable
。 这三个类别均实现了People
特质。
这种特点被称为People
组成的Auditable
, Listable
, Permitable
, Searchable
, Encryptable
, Hashable
, Currentable
, Relatable
和Triggerable
。
我正在尝试按特征筛选班级。 但是,当我尝试用特征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.