class LibraryDependencyResolver in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php \Drupal\Core\Asset\LibraryDependencyResolver
Resolves the dependencies of asset (CSS/JavaScript) libraries.
Hierarchy
- class \Drupal\Core\Asset\LibraryDependencyResolver implements LibraryDependencyResolverInterface
Expanded class hierarchy of LibraryDependencyResolver
1 file declares its use of LibraryDependencyResolver
- LibraryDependencyResolverTest.php in core/
tests/ Drupal/ Tests/ Core/ Asset/ LibraryDependencyResolverTest.php
1 string reference to 'LibraryDependencyResolver'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses LibraryDependencyResolver
File
- core/
lib/ Drupal/ Core/ Asset/ LibraryDependencyResolver.php, line 8
Namespace
Drupal\Core\AssetView source
class LibraryDependencyResolver implements LibraryDependencyResolverInterface {
/**
* The library discovery service.
*
* @var \Drupal\Core\Asset\LibraryDiscoveryInterface
*/
protected $libraryDiscovery;
/**
* Constructs a new LibraryDependencyResolver instance.
*
* @param \Drupal\Core\Asset\LibraryDiscoveryInterface $library_discovery
* The library discovery service.
*/
public function __construct(LibraryDiscoveryInterface $library_discovery) {
$this->libraryDiscovery = $library_discovery;
}
/**
* {@inheritdoc}
*/
public function getLibrariesWithDependencies(array $libraries) {
return $this
->doGetDependencies($libraries);
}
/**
* Gets the given libraries with its dependencies.
*
* Helper method for ::getLibrariesWithDependencies().
*
* @param string[] $libraries_with_unresolved_dependencies
* A list of libraries, with unresolved dependencies, in the order they
* should be loaded.
* @param string[] $final_libraries
* The final list of libraries (the return value) that is being built
* recursively.
*
* @return string[]
* A list of libraries, in the order they should be loaded, including their
* dependencies.
*/
protected function doGetDependencies(array $libraries_with_unresolved_dependencies, array $final_libraries = []) {
foreach ($libraries_with_unresolved_dependencies as $library) {
if (!in_array($library, $final_libraries)) {
list($extension, $name) = explode('/', $library, 2);
$definition = $this->libraryDiscovery
->getLibraryByName($extension, $name);
if (!empty($definition['dependencies'])) {
$final_libraries = $this
->doGetDependencies($definition['dependencies'], $final_libraries);
}
$final_libraries[] = $library;
}
}
return $final_libraries;
}
/**
* {@inheritdoc}
*/
public function getMinimalRepresentativeSubset(array $libraries) {
assert(count($libraries) === count(array_unique($libraries)), '$libraries can\'t contain duplicate items.');
$minimal = [];
// Determine each library's dependencies.
$with_deps = [];
foreach ($libraries as $library) {
$with_deps[$library] = $this
->getLibrariesWithDependencies([
$library,
]);
}
foreach ($libraries as $library) {
$exists = FALSE;
foreach ($with_deps as $other_library => $dependencies) {
if ($library == $other_library) {
continue;
}
if (in_array($library, $dependencies)) {
$exists = TRUE;
break;
}
}
if (!$exists) {
$minimal[] = $library;
}
}
return $minimal;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LibraryDependencyResolver:: |
protected | property | The library discovery service. | |
LibraryDependencyResolver:: |
protected | function | Gets the given libraries with its dependencies. | |
LibraryDependencyResolver:: |
public | function |
Gets the given libraries with their dependencies. Overrides LibraryDependencyResolverInterface:: |
|
LibraryDependencyResolver:: |
public | function |
Gets the minimal representative subset of the given libraries. Overrides LibraryDependencyResolverInterface:: |
|
LibraryDependencyResolver:: |
public | function | Constructs a new LibraryDependencyResolver instance. |