public function testExecutionConsidersExposedContext() { $lexer = new PointcutLexer(); $parser = new PointcutParser(); $context = new PointcutContext(); $context->addParam('resource', 'ResourceInterface'); $tok = $lexer->tokenize('execution(@Profiled (@Debug $resource)->*())'); $execution = $parser->parse($tok, $context); $this->assertTrue($execution instanceof ExecutionPointcut); $this->assertEquals('*', $execution->getNamePattern()); $filters = $execution->getAnnotationFilters(); $this->assertCount(1, $filters); $this->assertEquals(['Profiled'], $filters[0]->getAnnotations()); $type = $execution->getTypeMatcher(); $this->assertTrue($type instanceof TypePointcut); $this->assertEquals('ResourceInterface', $type->getNamePattern()); $filters = $type->getAnnotationFilters(); $this->assertCount(1, $filters); $this->assertEquals(['Debug'], $filters[0]->getAnnotations()); }
protected function createPointcutContext(TypeInfoInterface $type, MethodInfoInterface $method) { $context = new PointcutContext($type->getNamespaceContext()); foreach ($method->getParameters() as $param) { $context->addParam($param->getName(), $param->getRequiredType()); } foreach ($method->getAnnotationCandidates() as $anno) { $context->addAnnotation($anno); } return $context; }