Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Entity/DependencyTrait.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Entity/DependencyTrait.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,72 @@ +<?php + +namespace Drupal\Core\Entity; + +/** + * Provides a trait for managing an object's dependencies. + */ +trait DependencyTrait { + + /** + * The object's dependencies. + * + * @var array + */ + protected $dependencies = []; + + /** + * Adds a dependency. + * + * @param string $type + * Type of dependency being added: 'module', 'theme', 'config', 'content'. + * @param string $name + * If $type is 'module' or 'theme', the name of the module or theme. If + * $type is 'config' or 'content', the result of + * EntityInterface::getConfigDependencyName(). + * + * @see \Drupal\Core\Entity\EntityInterface::getConfigDependencyName() + * + * @return $this + */ + protected function addDependency($type, $name) { + if (empty($this->dependencies[$type])) { + $this->dependencies[$type] = [$name]; + if (count($this->dependencies) > 1) { + // Ensure a consistent order of type keys. + ksort($this->dependencies); + } + } + elseif (!in_array($name, $this->dependencies[$type])) { + $this->dependencies[$type][] = $name; + // Ensure a consistent order of dependency names. + sort($this->dependencies[$type], SORT_FLAG_CASE); + } + return $this; + } + + /** + * Adds multiple dependencies. + * + * @param array $dependencies + * An array of dependencies keyed by the type of dependency. One example: + * @code + * array( + * 'module' => array( + * 'node', + * 'field', + * 'image', + * ), + * ); + * @endcode + * + * @see \Drupal\Core\Entity\DependencyTrait::addDependency + */ + protected function addDependencies(array $dependencies) { + foreach ($dependencies as $dependency_type => $list) { + foreach ($list as $name) { + $this->addDependency($dependency_type, $name); + } + } + } + +}