/**
  * Returns the cache breaking string
  *
  * @return mixed
  */
 public function get()
 {
     if (!$this->storage->has(self::STORAGE_KEY)) {
         $this->update();
     }
     return $this->storage->get(self::STORAGE_KEY);
 }
 /**
  * Checks which classes lack a cache entry and removes their reflection data
  * accordingly.
  *
  * @return void
  */
 protected function forgetChangedClasses()
 {
     $frozenNamespaces = array();
     /** @var $package \TYPO3\Flow\Package */
     foreach ($this->packageManager->getAvailablePackages() as $packageKey => $package) {
         if ($this->packageManager->isPackageFrozen($packageKey)) {
             $frozenNamespaces[] = $package->getNamespace();
         }
     }
     $classNames = array_keys($this->classReflectionData);
     foreach ($frozenNamespaces as $namespace) {
         $namespace .= '\\';
         $namespaceLength = strlen($namespace);
         foreach ($classNames as $index => $className) {
             if (substr($className, 0, $namespaceLength) === $namespace) {
                 unset($classNames[$index]);
             }
         }
     }
     foreach ($classNames as $className) {
         if (!$this->statusCache->has(str_replace('\\', '_', $className))) {
             $this->forgetClass($className);
         }
     }
 }
 /**
  * Prepares a mirror of public package resources that is accessible through
  * the web server directly.
  *
  * @param array $activePackages
  * @return void
  */
 public function publishPublicPackageResources(array $activePackages)
 {
     if ($this->settings['resource']['publishing']['detectPackageResourceChanges'] === FALSE && $this->statusCache->has('packageResourcesPublished')) {
         return;
     }
     foreach ($activePackages as $packageKey => $package) {
         $this->resourcePublisher->publishStaticResources($package->getResourcesPath() . 'Public/', 'Packages/' . $packageKey . '/');
     }
     if (!$this->statusCache->has('packageResourcesPublished')) {
         $this->statusCache->set('packageResourcesPublished', 'y', array(\TYPO3\Flow\Cache\Frontend\FrontendInterface::TAG_PACKAGE));
     }
 }
 /**
  * Checks which classes lack a cache entry and removes their reflection data
  * accordingly.
  *
  * @return void
  */
 protected function forgetChangedClasses()
 {
     $frozenNamespaces = [];
     /** @var $package \TYPO3\Flow\Package */
     foreach ($this->packageManager->getAvailablePackages() as $packageKey => $package) {
         if ($this->packageManager->isPackageFrozen($packageKey)) {
             $frozenNamespaces[] = $package->getNamespace();
         }
     }
     $classNames = array_keys($this->classReflectionData);
     foreach ($frozenNamespaces as $namespace) {
         $namespace .= '\\';
         foreach ($classNames as $index => $className) {
             if (strpos($className, $namespace) === 0) {
                 unset($classNames[$index]);
             }
         }
     }
     foreach ($classNames as $className) {
         if (!$this->statusCache->has($this->produceCacheIdentifierFromClassName($className))) {
             $this->forgetClass($className);
         }
     }
 }
 /**
  * @param string $key
  * @return boolean
  */
 public function has($key)
 {
     return $this->cache->has($key);
 }
 /**
  * Initializes this monitor
  *
  * @return void
  */
 public function initializeObject()
 {
     if ($this->cache->has($this->identifier . '_directoriesAndFiles')) {
         $this->directoriesAndFiles = json_decode($this->cache->get($this->identifier . '_directoriesAndFiles'), TRUE);
     }
 }