/** * Splits the value of the pointcut designator "pointcut" into an aspect * class- and a pointcut method part and adds the appropriately configured * filter to the composite object. * * @param string $operator The operator * @param string $pointcutExpression The pointcut expression (value of the designator) * @param PointcutFilterComposite $pointcutFilterComposite An instance of the pointcut filter composite. The result (ie. the pointcut filter) will be added to this composite object. * @return void * @throws InvalidPointcutExpressionException */ protected function parseDesignatorPointcut($operator, $pointcutExpression, PointcutFilterComposite $pointcutFilterComposite) { if (strpos($pointcutExpression, '->') === false) { throw new InvalidPointcutExpressionException('Syntax error: "->" expected in "' . $pointcutExpression . '", defined in ' . $this->sourceHint, 1172219205); } list($aspectClassName, $pointcutMethodName) = explode('->', $pointcutExpression, 2); $pointcutFilter = new PointcutFilter($aspectClassName, $pointcutMethodName); $pointcutFilter->injectProxyClassBuilder($this->proxyClassBuilder); $pointcutFilterComposite->addFilter($operator, $pointcutFilter); }
/** * @test */ public function reduceTargetClassNamesReturnsTheInputClassNameIndexIfThePointcutCouldNotBeResolved() { $mockProxyClassBuilder = $this->getMockBuilder(Aop\Builder\ProxyClassBuilder::class)->disableOriginalConstructor()->setMethods(['findPointcut'])->getMock(); $mockProxyClassBuilder->expects($this->once())->method('findPointcut')->with('Aspect', 'pointcut')->will($this->returnValue(false)); $pointcutFilter = new Aop\Pointcut\PointcutFilter('Aspect', 'pointcut'); $pointcutFilter->injectProxyClassBuilder($mockProxyClassBuilder); $inputClassNameIndex = new Aop\Builder\ClassNameIndex(); $this->assertSame($inputClassNameIndex, $pointcutFilter->reduceTargetClassNames($inputClassNameIndex)); }