function CacheCollector::set

Same name in other branches
  1. 9 core/lib/Drupal/Core/Cache/CacheCollector.php \Drupal\Core\Cache\CacheCollector::set()
  2. 8.9.x core/lib/Drupal/Core/Cache/CacheCollector.php \Drupal\Core\Cache\CacheCollector::set()
  3. 11.x core/lib/Drupal/Core/Cache/CacheCollector.php \Drupal\Core\Cache\CacheCollector::set()

Implements \Drupal\Core\Cache\CacheCollectorInterface::set().

This is not persisted by default. In practice this means that setting a value will only apply while the object is in scope and will not be written back to the persistent cache. This follows a similar pattern to static vs. persistent caching in procedural code. Extending classes may wish to alter this behavior, for example by adding a call to persist(). If you are writing data to somewhere in addition to the cache item in ::set(), you should call static::updateCache() at the end of your ::set implementation. This avoids a race condition if another request starts with an empty cache before your ::set() call. For example: Drupal\Core\State\State.

Overrides CacheCollectorInterface::set

3 calls to CacheCollector::set()
CacheCollectorHelper::set in core/tests/Drupal/Tests/Core/Cache/CacheCollectorHelper.php
Implements \Drupal\Core\Cache\CacheCollectorInterface::set().
State::set in core/lib/Drupal/Core/State/State.php
Implements \Drupal\Core\Cache\CacheCollectorInterface::set().
State::setMultiple in core/lib/Drupal/Core/State/State.php
2 methods override CacheCollector::set()
CacheCollectorHelper::set in core/tests/Drupal/Tests/Core/Cache/CacheCollectorHelper.php
Implements \Drupal\Core\Cache\CacheCollectorInterface::set().
State::set in core/lib/Drupal/Core/State/State.php
Implements \Drupal\Core\Cache\CacheCollectorInterface::set().

File

core/lib/Drupal/Core/Cache/CacheCollector.php, line 166

Class

CacheCollector
Default implementation for CacheCollectorInterface.

Namespace

Drupal\Core\Cache

Code

public function set($key, $value) {
    $this->lazyLoadCache();
    $this->storage[$key] = $value;
    // The key might have been marked for deletion.
    unset($this->keysToRemove[$key]);
    $this->invalidateCache();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.