protected static function usesTrait($class, $trait, $autoload = false)
{
$traits = [];
do {
$traits = array_merge(class_uses($class, $autoload), $traits);
if (in_array($trait, $traits)) {
return true;
}
} while ($class = get_parent_class($class));
$traitsToSearch = $traits;
while (!empty($traitsToSearch)) {
$newTraits = class_uses(array_pop($traitsToSearch), $autoload);
$traits = array_merge($newTraits, $traits);
if (in_array($trait, $traits)) {
return true;
}
$traitsToSearch = array_merge($newTraits, $traitsToSearch);
}
foreach ($traits as $t => $str) {
$traits = array_merge(class_uses($t, $autoload), $traits);
if (in_array($trait, $traits)) {
return true;
}
}
return false;
}