class DelayCacheTagsInvalidationHooks

Hook implementations for delay_cache_tags_invalidation.

Hierarchy

Expanded class hierarchy of DelayCacheTagsInvalidationHooks

File

core/modules/system/tests/modules/delay_cache_tags_invalidation/src/Hook/DelayCacheTagsInvalidationHooks.php, line 16

Namespace

Drupal\delay_cache_tags_invalidation\Hook
View source
class DelayCacheTagsInvalidationHooks {
  
  /**
   * Implements hook_ENTITY_TYPE_insert().
   */
  public function entityTestInsert(EntityTest $entity) : void {
    if (\Drupal::state()->get('delay_cache_tags_invalidation_exception')) {
      throw new \Exception('Abort entity save to trigger transaction rollback.');
    }
    // Read the pre-transaction cache writes.
    // @see \Drupal\KernelTests\Core\Cache\EndOfTransactionQueriesTest::testEntitySave()
    \Drupal::state()->set('delay_cache_tags_invalidation_entity_test_insert__pre-transaction_foobar', \Drupal::cache()->get('test_cache_pre-transaction_foobar'));
    \Drupal::state()->set('delay_cache_tags_invalidation_entity_test_insert__pre-transaction_entity_test_list', \Drupal::cache()->get('test_cache_pre-transaction_entity_test_list'));
    // Write during the transaction.
    \Drupal::cache()->set('delay_cache_tags_invalidation_entity_test_insert__during_transaction_foobar', 'something', Cache::PERMANENT, [
      'foobar',
    ]);
    \Drupal::cache()->set('delay_cache_tags_invalidation_entity_test_insert__during_transaction_entity_test_list', 'something', Cache::PERMANENT, [
      'entity_test_list',
    ]);
    // Trigger a nested entity save and hence a nested transaction.
    User::create([
      'name' => 'john doe',
      'status' => 1,
    ])->save();
  }
  
  /**
   * Implements hook_ENTITY_TYPE_insert().
   */
  public function userInsert(UserInterface $entity) : void {
    if ($entity->getAccountName() === 'john doe') {
      // Read the in-transaction cache writes.
      // @see  delay_cache_tags_invalidation_entity_test_insert()
      \Drupal::state()->set('delay_cache_tags_invalidation_user_insert__during_transaction_foobar', \Drupal::cache()->get('delay_cache_tags_invalidation_entity_test_insert__during_transaction_foobar'));
      \Drupal::state()->set('delay_cache_tags_invalidation_user_insert__during_transaction_entity_test_list', \Drupal::cache()->get('delay_cache_tags_invalidation_entity_test_insert__during_transaction_entity_test_list'));
    }
  }

}

Members

Title Sort descending Modifiers Object type Summary
DelayCacheTagsInvalidationHooks::entityTestInsert public function Implements hook_ENTITY_TYPE_insert().
DelayCacheTagsInvalidationHooks::userInsert public function Implements hook_ENTITY_TYPE_insert().

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