Go\Core\AspectLoader::loadFrom PHP Method

loadFrom() protected method

Load definitions from specific aspect part into the aspect container
protected loadFrom ( Go\Aop\Aspect $aspect, ReflectionClass | ReflectionMethod | ReflectionProperty $refPoint, array $loaders ) : array | Go\Aop\Pointcut[] | Go\Aop\Advisor[]
$aspect Go\Aop\Aspect Aspect instance
$refPoint ReflectionClass | ReflectionMethod | ReflectionProperty Reflection instance
$loaders array List of loaders that can produce advisors from aspect class
return array | Go\Aop\Pointcut[] | Go\Aop\Advisor[]
    protected function loadFrom(Aspect $aspect, $refPoint, array $loaders)
    {
        $loadedItems = [];
        foreach ($loaders as $loader) {
            $loaderKind = $loader->getKind();
            switch ($loaderKind) {
                case AspectLoaderExtension::KIND_REFLECTION:
                    if ($loader->supports($aspect, $refPoint)) {
                        $loadedItems += $loader->load($aspect, $refPoint);
                    }
                    break;
                case AspectLoaderExtension::KIND_ANNOTATION:
                    $annotations = $this->getAnnotations($refPoint);
                    foreach ($annotations as $annotation) {
                        if ($loader->supports($aspect, $refPoint, $annotation)) {
                            $loadedItems += $loader->load($aspect, $refPoint, $annotation);
                        }
                    }
                    break;
                default:
                    throw new \InvalidArgumentException("Unsupported loader kind {$loaderKind}");
            }
        }
        return $loadedItems;
    }