<?php namespace Metadata\Driver; final class DriverChain implements AdvancedDriverInterface { private $drivers; public function __construct(array $drivers = array()) { $this->drivers = $drivers; } public function addDriver(DriverInterface $driver) { $this->drivers[] = $driver; } public function loadMetadataForClass(\ReflectionClass $class) { foreach ($this->drivers as $driver) { if (null !== $metadata = $driver->loadMetadataForClass($class)) { return $metadata; } } return null; } /** * {@inheritDoc} */ public function getAllClassNames() { $classes = array(); foreach ($this->drivers as $driver) { if (!$driver instanceof AdvancedDriverInterface) { throw new \RuntimeException( sprintf( 'Driver "%s" must be an instance of "AdvancedDriverInterface" to use '. '"DriverChain::getAllClassNames()".', get_class($driver) ) ); } $driverClasses = $driver->getAllClassNames(); if (!empty($driverClasses)) { $classes = array_merge($classes, $driverClasses); } } return $classes; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
AbstractFileDriver.php | File | 1.44 KB | 0644 |
|
AdvancedDriverInterface.php | File | 329 B | 0644 |
|
AdvancedFileLocatorInterface.php | File | 372 B | 0644 |
|
DriverChain.php | File | 1.36 KB | 0644 |
|
DriverInterface.php | File | 232 B | 0644 |
|
FileLocator.php | File | 1.71 KB | 0644 |
|
FileLocatorInterface.php | File | 275 B | 0644 |
|
LazyLoadingDriver.php | File | 584 B | 0644 |
|