Neos\Flow\Session\Aspect\SessionObjectMethodsPointcutFilter::reduceTargetClassNames PHP Метод

reduceTargetClassNames() публичный Метод

This method is used to optimize the matching process.
public reduceTargetClassNames ( ClassNameIndex $classNameIndex ) : ClassNameIndex
$classNameIndex Neos\Flow\Aop\Builder\ClassNameIndex
Результат Neos\Flow\Aop\Builder\ClassNameIndex
    public function reduceTargetClassNames(ClassNameIndex $classNameIndex)
    {
        $sessionClasses = new ClassNameIndex();
        $sessionClasses->setClassNames($this->objectManager->getClassNamesByScope(ObjectConfiguration::SCOPE_SESSION));
        return $classNameIndex->intersect($sessionClasses);
    }

Usage Example

 /**
  * @test
  */
 public function reduceTargetClassNamesFiltersAllClassesNotBeeingConfiguredAsScopeSession()
 {
     $availableClassNames = ['TestPackage\\Subpackage\\Class1', 'TestPackage\\Class2', 'TestPackage\\Subpackage\\SubSubPackage\\Class3', 'TestPackage\\Subpackage2\\Class4'];
     sort($availableClassNames);
     $availableClassNamesIndex = new ClassNameIndex();
     $availableClassNamesIndex->setClassNames($availableClassNames);
     $mockCompileTimeObjectManager = $this->getMockBuilder(CompileTimeObjectManager::class)->disableOriginalConstructor()->getMock();
     $mockCompileTimeObjectManager->expects($this->any())->method('getClassNamesByScope')->with(Configuration::SCOPE_SESSION)->will($this->returnValue(['TestPackage\\Subpackage\\Class1', 'TestPackage\\Subpackage\\SubSubPackage\\Class3', 'SomeMoreClass']));
     $sessionObjectMethodsPointcutFilter = new SessionObjectMethodsPointcutFilter();
     $sessionObjectMethodsPointcutFilter->injectObjectManager($mockCompileTimeObjectManager);
     $expectedClassNames = ['TestPackage\\Subpackage\\Class1', 'TestPackage\\Subpackage\\SubSubPackage\\Class3'];
     sort($expectedClassNames);
     $expectedClassNamesIndex = new ClassNameIndex();
     $expectedClassNamesIndex->setClassNames($expectedClassNames);
     $result = $sessionObjectMethodsPointcutFilter->reduceTargetClassNames($availableClassNamesIndex);
     $this->assertEquals($expectedClassNamesIndex, $result, 'The wrong class names have been filtered');
 }