/**
* Return list of advices for class
*
* @param string|ReflectionClass|ParsedReflectionClass $class Class to advise
*
* @return array|Aop\Advice[] List of advices for class
*/
public function getAdvicesForClass($class)
{
$this->loader->loadAdvisorsAndPointcuts();
$classAdvices = array();
if (!$class instanceof ReflectionClass && !$class instanceof ParsedReflectionClass) {
$class = new ReflectionClass($class);
}
$parentClass = $class->getParentClass();
if ($parentClass && preg_match('/' . AspectContainer::AOP_PROXIED_SUFFIX . '$/', $parentClass->name)) {
$originalClass = $parentClass;
} else {
$originalClass = $class;
}
foreach ($this->container->getByTag('advisor') 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;
}