You are here

class DbCacheClassLoader in X Autoload 7.5

A class loader decorator using Drupal's native db cache.

Hierarchy

Expanded class hierarchy of DbCacheClassLoader

1 file declares its use of DbCacheClassLoader
xautoload.module in ./xautoload.module

File

src/ClassLoader/DbCacheClassLoader.php, line 12

Namespace

Drupal\xautoload\ClassLoader
View source
class DbCacheClassLoader extends AbstractQueuedCachedClassLoader {

  /**
   * @var string
   */
  private $cacheName;

  /**
   * @param string $prefix
   *
   * @return string[]
   */
  protected function loadClassFiles($prefix) {
    $this->cacheName = 'xautoload_db_cache:' . $prefix;
    $cached = cache_get($this->cacheName);
    return isset($cached->data) ? $cached->data : array();
  }

  /**
   * @param string[] $toBeAdded
   * @param string[] $toBeRemoved
   *
   * @return string[]
   */
  protected function updateClassFiles($toBeAdded, $toBeRemoved) {
    $class_files = $toBeAdded;

    // Other requests may have already written to the cache, so we get an up to
    // date version.
    $cached = cache_get($this->cacheName);
    if (isset($cached->data)) {
      $class_files += $cached->data;
      foreach ($toBeRemoved as $class => $file) {
        if (isset($class_files[$class]) && $class_files[$class] === $file) {
          unset($class_files[$class]);
        }
      }
    }
    cache_set($this->cacheName, $class_files);
    return $class_files;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AbstractClassLoader::register function Registers this instance as an autoloader. Overrides ClassLoaderInterface::register
AbstractClassLoader::unregister function Unregister from the spl autoload stack. Overrides ClassLoaderInterface::unregister
AbstractClassLoaderDecorator::$finder protected property
AbstractClassLoaderDecorator::setFinder function Replace the finder with another one.
AbstractClassLoaderDecorator::__construct protected function
AbstractQueuedCachedClassLoader::$classFiles private property
AbstractQueuedCachedClassLoader::$n private property
AbstractQueuedCachedClassLoader::$nMax private property
AbstractQueuedCachedClassLoader::$toBeAdded private property
AbstractQueuedCachedClassLoader::$toBeDeleted private property
AbstractQueuedCachedClassLoader::create static function This method has side effects, so it is not the constructor.
AbstractQueuedCachedClassLoader::loadClass function Callback for class loading. This will include ("require") the file found. Overrides AbstractClassLoaderDecorator::loadClass
AbstractQueuedCachedClassLoader::setCachePrefix function Set the new cache prefix after a flush cache. Overrides CacheManagerObserverInterface::setCachePrefix
DbCacheClassLoader::$cacheName private property
DbCacheClassLoader::loadClassFiles protected function Overrides AbstractQueuedCachedClassLoader::loadClassFiles
DbCacheClassLoader::updateClassFiles protected function Overrides AbstractQueuedCachedClassLoader::updateClassFiles