public function testMultipleAdvice() { defineClass("ResultInterceptor", ' class %s implements Sabel_Aspect_MethodInterceptor { public function invoke(Sabel_Aspect_MethodInvocation $invocation) { return "adviced " . $invocation->proceed(); } } '); $weaver = $this->weaver; $weaver->setTarget("Sabel_Tests_Aspect_TargetClass"); $advisor = new Sabel_Aspect_Advisor_RegexMatcherPointcut(); $advisor->setClassMatchPattern("/.+/U"); $advisor->setMethodMatchPattern("/get+/"); $advisor->addAdvice(new ResultInterceptor()); $weaver->addAdvisor($advisor); $target = $weaver->getProxy(); $this->assertEquals("adviced X", $target->getX()); $this->assertEquals("adviced Y", $target->getY()); $advisor->addAdvice(new ResultInterceptor()); $this->assertEquals("adviced adviced X", $weaver->getProxy()->getX()); $this->assertEquals("adviced adviced Y", $weaver->getProxy()->getY()); $advisor->addAdvice(new ResultInterceptor()); $this->assertEquals("adviced adviced adviced X", $weaver->getProxy()->getX()); $this->assertEquals("adviced adviced adviced Y", $weaver->getProxy()->getY()); }
public function __construct() { defineClass("MyClassMatcher", ' class %s implements Sabel_Aspect_Matcher_Class { public function matches($class) { return true; } } '); $this->setClassMatcher(new MyClassMatcher()); }