/**
  * Builds the package namespaces and classes paths for the given packages
  *
  * @throws \Exception
  * @return void
  */
 protected function buildPackageNamespacesAndClassesPaths()
 {
     $didLock = $this->acquireLock();
     // Take a look again, after lock is acquired
     if (!$this->loadPackageNamespacesFromCache()) {
         try {
             foreach ($this->packages as $package) {
                 $this->buildPackageNamespaceAndClassesPath($package);
             }
             $this->sortPackageNamespaces();
             $this->savePackageNamespacesAndClassesPathsToCache();
             // The class alias map has to be rebuilt first, because ext_autoload files can contain
             // old class names that need established class aliases.
             $classNameToAliasMapping = $this->classAliasMap->setPackages($this->packages)->buildMappingAndInitializeEarlyInstanceMapping();
             $this->loadClassFilesFromAutoloadRegistryIntoRuntimeClassInformationCache($this->packages);
             $this->classAliasMap->buildMappingFiles($classNameToAliasMapping);
             $this->transferRuntimeClassInformationCacheEntriesToClassesCache();
         } catch (\Exception $e) {
             // Catching all Exceptions, as we don't know where in the process the class cache building breaks we
             // need to clear our cache and also release our lock before we throw the Exception again to the user.
             $this->clearClassesCache();
             $this->releaseLock($didLock);
             throw $e;
         }
     }
     $this->releaseLock($didLock);
 }
Example #2
0
 /**
  * Builds the package namespaces and classes paths for the given packages
  *
  * @return void
  */
 protected function buildPackageNamespacesAndClassesPaths()
 {
     $didLock = $this->acquireLock();
     // Take a look again, after lock is acquired
     if (!$this->loadPackageNamespacesFromCache()) {
         foreach ($this->packages as $package) {
             $this->buildPackageNamespaceAndClassesPath($package);
         }
         $this->sortPackageNamespaces();
         $this->savePackageNamespacesAndClassesPathsToCache();
         // The class alias map has to be rebuilt first, because ext_autoload files can contain
         // old class names that need established class aliases.
         $classNameToAliasMapping = $this->classAliasMap->setPackages($this->packages)->buildMappingAndInitializeEarlyInstanceMapping();
         $this->loadClassFilesFromAutoloadRegistryIntoRuntimeClassInformationCache($this->packages);
         $this->classAliasMap->buildMappingFiles($classNameToAliasMapping);
         $this->transferRuntimeClassInformationCacheEntriesToClassesCache();
     }
     $this->releaseLock($didLock);
 }