diff --git a/src/Builder/DefaultDriverFactory.php b/src/Builder/DefaultDriverFactory.php index 5b53daf68..ffcf9b290 100644 --- a/src/Builder/DefaultDriverFactory.php +++ b/src/Builder/DefaultDriverFactory.php @@ -19,6 +19,7 @@ use Metadata\Driver\DriverChain; use Metadata\Driver\DriverInterface; use Metadata\Driver\FileLocator; +use Symfony\Component\Yaml\Yaml; final class DefaultDriverFactory implements DriverFactoryInterface { @@ -62,11 +63,15 @@ public function createDriver(array $metadataDirs, Reader $annotationReader): Dri if (!empty($metadataDirs)) { $fileLocator = new FileLocator($metadataDirs); - $driver = new DriverChain([ - new YamlDriver($fileLocator, $this->propertyNamingStrategy, $this->typeParser, $this->expressionEvaluator), - new XmlDriver($fileLocator, $this->propertyNamingStrategy, $this->typeParser, $this->expressionEvaluator), - $driver, - ]); + $innerDriver = $driver; + $driver = new DriverChain(); + + if (class_exists(Yaml::class)) { + $driver->addDriver(new YamlDriver($fileLocator, $this->propertyNamingStrategy, $this->typeParser, $this->expressionEvaluator)); + } + + $driver->addDriver(new XmlDriver($fileLocator, $this->propertyNamingStrategy, $this->typeParser, $this->expressionEvaluator)); + $driver->addDriver($innerDriver); } $driver->addDriver(new NullDriver($this->propertyNamingStrategy));