Selaa lähdekoodia

Invalidate map cache when addPackage/removePackage is called

Jordi Boggiano 5 vuotta sitten
vanhempi
commit
44cdc37c0c
1 muutettua tiedostoa jossa 10 lisäystä ja 0 poistoa
  1. 10 0
      src/Composer/Repository/ArrayRepository.php

+ 10 - 0
src/Composer/Repository/ArrayRepository.php

@@ -28,6 +28,10 @@ class ArrayRepository extends BaseRepository
 {
 {
     /** @var PackageInterface[] */
     /** @var PackageInterface[] */
     protected $packages;
     protected $packages;
+    
+    /** 
+      * @var PackageInterface[] indexed by package unique name and used to cache hasPackage calls
+      */
     protected $packageMap;
     protected $packageMap;
 
 
     public function __construct(array $packages = array())
     public function __construct(array $packages = array())
@@ -151,6 +155,9 @@ class ArrayRepository extends BaseRepository
                 $this->addPackage($aliasedPackage);
                 $this->addPackage($aliasedPackage);
             }
             }
         }
         }
+
+        // invalidate package map cache
+        $this->packageMap = null;
     }
     }
 
 
     protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias)
     protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias)
@@ -171,6 +178,9 @@ class ArrayRepository extends BaseRepository
             if ($packageId === $repoPackage->getUniqueName()) {
             if ($packageId === $repoPackage->getUniqueName()) {
                 array_splice($this->packages, $key, 1);
                 array_splice($this->packages, $key, 1);
 
 
+                // invalidate package map cache
+                $this->packageMap = null;
+
                 return;
                 return;
             }
             }
         }
         }