Browse Source

Move loader creation to avoid creating it more than once, unified the way packages are loading across repository classes

Fabien Potencier 13 năm trước cách đây
mục cha
commit
527c711149

+ 4 - 9
src/Composer/Repository/ComposerRepository.php

@@ -43,16 +43,11 @@ class ComposerRepository extends ArrayRepository
             throw new \UnexpectedValueException('Could not parse package list from the '.$this->url.' repository');
         }
 
+        $loader = new ArrayLoader($this->repositoryManager);
         foreach ($packages as $data) {
-            $this->createPackages($data);
-        }
-    }
-
-    private function createPackages($data)
-    {
-        foreach ($data['versions'] as $rev) {
-            $loader = new ArrayLoader($this->repositoryManager);
-            $this->addPackage($loader->load($rev));
+            foreach ($data['versions'] as $rev) {
+                $this->addPackage($loader->load($rev));
+            }
         }
     }
 }

+ 1 - 6
src/Composer/Repository/GitRepository.php

@@ -58,12 +58,7 @@ class GitRepository extends ArrayRepository
             throw new \InvalidArgumentException('Could not find repository at url '.$this->url);
         }
 
-        $this->createPackage($config);
-    }
-
-    protected function createPackage($data)
-    {
         $loader = new ArrayLoader($this->repositoryManager);
-        $this->addPackage($loader->load($data));
+        $this->addPackage($loader->load($config));
     }
 }

+ 1 - 1
src/Composer/Repository/PackageRepository.php

@@ -47,8 +47,8 @@ class PackageRepository extends ArrayRepository
             $this->config = array($this->config);
         }
 
+        $loader = new ArrayLoader($this->repositoryManager);
         foreach ($this->config as $package) {
-            $loader = new ArrayLoader($this->repositoryManager);
             $package = $loader->load($package);
             $this->addPackage($package);
         }

+ 1 - 1
src/Composer/Repository/PearRepository.php

@@ -57,6 +57,7 @@ class PearRepository extends ArrayRepository
             $packagesXML = $this->requestXml($this->url . $categoryLink);
 
             $packages = $packagesXML->getElementsByTagName('p');
+            $loader = new ArrayLoader($this->repositoryManager);
             foreach ($packages as $package) {
                 $packageName = $package->nodeValue;
 
@@ -101,7 +102,6 @@ class PearRepository extends ArrayRepository
                         }
                     }
 
-                    $loader = new ArrayLoader($this->repositoryManager);
                     $this->addPackage($loader->load($packageData));
                 }
             }