Exemplo n.º 1
0
 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());
 }
Exemplo n.º 2
0
 public function __construct()
 {
     defineClass("MyClassMatcher", '
   class %s implements Sabel_Aspect_Matcher_Class
   {
     public function matches($class)
     {
       return true;
     }
   }
 ');
     $this->setClassMatcher(new MyClassMatcher());
 }