Ver Fonte

makes metadata driver more efficient

Johannes M. Schmitt há 12 anos atrás
pai
commit
6f258783ad
1 ficheiros alterados com 14 adições e 8 exclusões
  1. 14 8
      src/JMS/Serializer/SerializerBuilder.php

+ 14 - 8
src/JMS/Serializer/SerializerBuilder.php

@@ -25,7 +25,8 @@ use Metadata\Cache\FileCache;
 /**
  * Builder for serializer instances.
  *
- * This makes it easier for you to wire all the different classes together.
+ * This object makes serializer construction a breeze for projects that do not use
+ * any special dependency injection container.
  *
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
  */
@@ -277,8 +278,6 @@ class SerializerBuilder
 
     public function build()
     {
-        $fileLocator = new FileLocator($this->metadataDirs);
-
         $annotationReader = $this->annotationReader;
         if (null === $annotationReader) {
             $annotationReader = new AnnotationReader();
@@ -289,11 +288,18 @@ class SerializerBuilder
             }
         }
 
-        $metadataFactory = new MetadataFactory(new DriverChain(array(
-            new YamlDriver($fileLocator),
-            new XmlDriver($fileLocator),
-            new AnnotationDriver($annotationReader),
-        )), null, $this->debug);
+        if ( ! empty($this->metadataDirs)) {
+            $fileLocator = new FileLocator($this->metadataDirs);
+            $metadataDriver = new DriverChain(array(
+                new YamlDriver($fileLocator),
+                new XmlDriver($fileLocator),
+                new AnnotationDriver($annotationReader),
+            ));
+        } else {
+            $metadataDriver = new AnnotationDriver($annotationReader);
+        }
+
+        $metadataFactory = new MetadataFactory($metadataDriver, null, $this->debug);
 
         if (null !== $this->cacheDir) {
             $this->createDir($this->cacheDir.'/metadata');