You are here

class LibraryDiscovery in Drupal 9

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Asset/LibraryDiscovery.php \Drupal\Core\Asset\LibraryDiscovery

Discovers available asset libraries in Drupal.

Hierarchy

Expanded class hierarchy of LibraryDiscovery

1 file declares its use of LibraryDiscovery
LibraryDiscoveryTest.php in core/tests/Drupal/Tests/Core/Asset/LibraryDiscoveryTest.php
1 string reference to 'LibraryDiscovery'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses LibraryDiscovery
library.discovery in core/core.services.yml
Drupal\Core\Asset\LibraryDiscovery

File

core/lib/Drupal/Core/Asset/LibraryDiscovery.php, line 10

Namespace

Drupal\Core\Asset
View source
class LibraryDiscovery implements LibraryDiscoveryInterface {

  /**
   * The library discovery cache collector.
   *
   * @var \Drupal\Core\Cache\CacheCollectorInterface
   */
  protected $collector;

  /**
   * The final library definitions, statically cached.
   *
   * Hooks hook_library_info_alter() and hook_js_settings_alter() allow modules
   * and themes to dynamically alter a library definition (once per request).
   *
   * @var array
   */
  protected $libraryDefinitions = [];

  /**
   * Constructs a new LibraryDiscovery instance.
   *
   * @param \Drupal\Core\Cache\CacheCollectorInterface $library_discovery_collector
   *   The library discovery cache collector.
   */
  public function __construct(CacheCollectorInterface $library_discovery_collector) {
    $this->collector = $library_discovery_collector;
  }

  /**
   * {@inheritdoc}
   */
  public function getLibrariesByExtension($extension) {
    if (!isset($this->libraryDefinitions[$extension])) {
      $libraries = $this->collector
        ->get($extension);
      $this->libraryDefinitions[$extension] = [];
      foreach ($libraries as $name => $definition) {
        $this->libraryDefinitions[$extension][$name] = $definition;
      }
    }
    return $this->libraryDefinitions[$extension];
  }

  /**
   * {@inheritdoc}
   */
  public function getLibraryByName($extension, $name) {
    $libraries = $this
      ->getLibrariesByExtension($extension);
    if (!isset($libraries[$name])) {
      return FALSE;
    }
    if (isset($libraries[$name]['deprecated'])) {
      @trigger_error(str_replace('%library_id%', "{$extension}/{$name}", $libraries[$name]['deprecated']), E_USER_DEPRECATED);
    }
    return $libraries[$name];
  }

  /**
   * {@inheritdoc}
   */
  public function clearCachedDefinitions() {
    $this->libraryDefinitions = [];
    $this->collector
      ->clear();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
LibraryDiscovery::$collector protected property The library discovery cache collector.
LibraryDiscovery::$libraryDefinitions protected property The final library definitions, statically cached.
LibraryDiscovery::clearCachedDefinitions public function Clears static and persistent library definition caches. Overrides LibraryDiscoveryInterface::clearCachedDefinitions
LibraryDiscovery::getLibrariesByExtension public function Gets all libraries defined by an extension. Overrides LibraryDiscoveryInterface::getLibrariesByExtension
LibraryDiscovery::getLibraryByName public function Gets a single library defined by an extension by name. Overrides LibraryDiscoveryInterface::getLibraryByName
LibraryDiscovery::__construct public function Constructs a new LibraryDiscovery instance.