public function getAdvicesForClass(ReflectionClass $class, array $advisors)
{
$classAdvices = [];
$parentClass = $class->getParentClass();
if ($parentClass && preg_match('/' . AspectContainer::AOP_PROXIED_SUFFIX . '$/', $parentClass->name)) {
$originalClass = $parentClass;
} else {
$originalClass = $class;
}
foreach ($advisors as $advisorId => $advisor) {
if ($advisor instanceof Aop\PointcutAdvisor) {
$pointcut = $advisor->getPointcut();
if ($pointcut->getClassFilter()->matches($class)) {
$classAdvices = array_merge_recursive($classAdvices, $this->getAdvicesFromAdvisor($originalClass, $advisor, $advisorId, $pointcut));
}
}
if ($advisor instanceof Aop\IntroductionAdvisor) {
if ($advisor->getClassFilter()->matches($class)) {
$classAdvices = array_merge_recursive($classAdvices, $this->getIntroductionFromAdvisor($originalClass, $advisor, $advisorId));
}
}
}
return $classAdvices;
}