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;
}