You are here

public function EntityTypeManager::getHandler in Drupal 8

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/EntityTypeManager.php \Drupal\Core\Entity\EntityTypeManager::getHandler()

Returns a handler instance for the given entity type and handler.

Entity handlers are instantiated once per entity type and then cached in the entity type manager, and so subsequent calls to getHandler() for a particular entity type and handler type will return the same object. This means that properties on a handler may be used as a static cache, although as the handler is common to all entities of the same type, any data that is per-entity should be keyed by the entity ID.

Parameters

string $entity_type_id: The entity type ID for this handler.

string $handler_type: The handler type to create an instance for.

Return value

object A handler instance.

Throws

\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException

Overrides EntityTypeManagerInterface::getHandler

4 calls to EntityTypeManager::getHandler()
EntityTypeManager::getAccessControlHandler in core/lib/Drupal/Core/Entity/EntityTypeManager.php
Creates a new access control handler instance.
EntityTypeManager::getListBuilder in core/lib/Drupal/Core/Entity/EntityTypeManager.php
Creates a new entity list builder.
EntityTypeManager::getStorage in core/lib/Drupal/Core/Entity/EntityTypeManager.php
Creates a new storage instance.
EntityTypeManager::getViewBuilder in core/lib/Drupal/Core/Entity/EntityTypeManager.php
Creates a new view builder instance.

File

core/lib/Drupal/Core/Entity/EntityTypeManager.php, line 267

Class

EntityTypeManager
Manages entity type plugin definitions.

Namespace

Drupal\Core\Entity

Code

public function getHandler($entity_type_id, $handler_type) {
  if (!isset($this->handlers[$handler_type][$entity_type_id])) {
    $definition = $this
      ->getDefinition($entity_type_id);
    $class = $definition
      ->getHandlerClass($handler_type);
    if (!$class) {
      throw new InvalidPluginDefinitionException($entity_type_id, sprintf('The "%s" entity type did not specify a %s handler.', $entity_type_id, $handler_type));
    }
    $this->handlers[$handler_type][$entity_type_id] = $this
      ->createHandlerInstance($class, $definition);
  }
  return $this->handlers[$handler_type][$entity_type_id];
}