浏览代码

Invalidate map cache when addPackage/removePackage is called

Jordi Boggiano 5 年之前
父节点
当前提交
44cdc37c0c
共有 1 个文件被更改,包括 10 次插入0 次删除
  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[] */
     protected $packages;
+    
+    /** 
+      * @var PackageInterface[] indexed by package unique name and used to cache hasPackage calls
+      */
     protected $packageMap;
 
     public function __construct(array $packages = array())
@@ -151,6 +155,9 @@ class ArrayRepository extends BaseRepository
                 $this->addPackage($aliasedPackage);
             }
         }
+
+        // invalidate package map cache
+        $this->packageMap = null;
     }
 
     protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias)
@@ -171,6 +178,9 @@ class ArrayRepository extends BaseRepository
             if ($packageId === $repoPackage->getUniqueName()) {
                 array_splice($this->packages, $key, 1);
 
+                // invalidate package map cache
+                $this->packageMap = null;
+
                 return;
             }
         }