protected function getIntroducedMethodsFromInterfaceIntroductions(array $interfaceIntroductions): array
    {
        $methods = [];
        $methodsAndIntroductions = [];
        foreach ($interfaceIntroductions as $introduction) {
            $interfaceName = $introduction->getInterfaceName();
            $methodNames = get_class_methods($interfaceName);
            if (is_array($methodNames)) {
                foreach ($methodNames as $newMethodName) {
                    if (isset($methodsAndIntroductions[$newMethodName])) {
                        throw new Aop\Exception('Method name conflict! Method "' . $newMethodName . '" introduced by "' . $introduction->getInterfaceName() . '" declared in aspect "' . $introduction->getDeclaringAspectClassName() . '" has already been introduced by "' . $methodsAndIntroductions[$newMethodName]->getInterfaceName() . '" declared in aspect "' . $methodsAndIntroductions[$newMethodName]->getDeclaringAspectClassName() . '".', 1173020942);
                    }
                    $methods[] = [$interfaceName, $newMethodName];
                    $methodsAndIntroductions[$newMethodName] = $introduction;
                }
            }
        }
        return $methods;
    }
protected function getIntroducedMethodsFromInterfaceIntroductions(array $interfaceIntroductions): array
    {
        $methods = [];
        $methodsAndIntroductions = [];
        foreach ($interfaceIntroductions as $introduction) {
            $interfaceName = $introduction->getInterfaceName();
            $methodNames = get_class_methods($interfaceName);
            if (is_array($methodNames)) {
                foreach ($methodNames as $newMethodName) {
                    if (isset($methodsAndIntroductions[$newMethodName])) {
                        throw new Aop\Exception('Method name conflict! Method "' . $newMethodName . '" introduced by "' . $introduction->getInterfaceName() . '" declared in aspect "' . $introduction->getDeclaringAspectClassName() . '" has already been introduced by "' . $methodsAndIntroductions[$newMethodName]->getInterfaceName() . '" declared in aspect "' . $methodsAndIntroductions[$newMethodName]->getDeclaringAspectClassName() . '".', 1173020942);
                    }
                    $methods[] = [$interfaceName, $newMethodName];
                    $methodsAndIntroductions[$newMethodName] = $introduction;
                }
            }
        }
        return $methods;
    }
protected function getIntroducedMethodsFromInterfaceIntroductions ( array $ interfaceIntroductions ) : array { $ methods = [ ] ; $ methodsAndIntroductions = [ ] ; foreach ( $ interfaceIntroductions as $ introduction ) { $ interfaceName = $ introduction -> getInterfaceName ( ) ; $ methodNames = get_class_methods ( $ interfaceName ) ; if ( is_array ( $ methodNames ) ) { foreach ( $ methodNames as $ newMethodName ) { if ( isset ( $ methodsAndIntroductions [ $ newMethodName ] ) ) { throw new Aop \ Exception ( 'Method name conflict! Method "' . $ newMethodName . '" introduced by "' . $ introduction -> getInterfaceName ( ) . '" declared in aspect "' . $ introduction -> getDeclaringAspectClassName ( ) . '" has already been introduced by "' . $ methodsAndIntroductions [ $ newMethodName ] -> getInterfaceName ( ) . '" declared in aspect "' . $ methodsAndIntroductions [ $ newMethodName ] -> getDeclaringAspectClassName ( ) . '".' , 1173020942 ) ; } $ methods [ ] = [ $ interfaceName , $ newMethodName ] ; $ methodsAndIntroductions [ $ newMethodName ] = $ introduction ; } } } return $ methods ; }
Returns all methods declared by the introduced interfaces

@param array $interfaceIntroductions An array of Aop\InterfaceIntroduction
@return array An array of method information (interface, method name)
@throws Aop\Exception
Returns all methods declared by the introduced interfaces