protected function getMatchingTraitNamesFromIntroductions(array &$aspectContainers, $targetClassName)
{
$introductions = [];
/** @var AspectContainer $aspectContainer */
foreach ($aspectContainers as $aspectContainer) {
if (!$aspectContainer->getCachedTargetClassNameCandidates()->hasClassName($targetClassName)) {
continue;
}
/** @var TraitIntroduction $introduction */
foreach ($aspectContainer->getTraitIntroductions() as $introduction) {
$pointcut = $introduction->getPointcut();
if ($pointcut->matches($targetClassName, null, null, uniqid())) {
$introductions[] = '\\' . $introduction->getTraitName();
}
}
}
return $introductions;
}