Drupal

Static Service Container wrapper.

Generally, code in Drupal should accept its dependencies via either constructor injection or setter method injection. However, there are cases, particularly in legacy procedural code, where that is infeasible. This class acts as a unified global accessor to arbitrary services within the system in order to ease the transition from procedural code to injected OO code.

The container is built by the kernel and passed in to this class which stores it statically. The container always contains the services from \Drupal\Core\CoreServiceProvider, the service providers of enabled modules and any other service providers defined in $GLOBALS['conf']['container_service_providers'].

This class exists only to support legacy code that cannot be dependency injected. If your code needs it, consider refactoring it to be object oriented, if possible. When this is not possible, for instance in the case of hook implementations, and your code is more than a few non-reusable lines, it is recommended to instantiate an object implementing the actual logic.

  // Legacy procedural code.
  function hook_do_stuff() {
    $lock = lock()->acquire('stuff_lock');
    // ...
  }

  // Correct procedural code.
  function hook_do_stuff() {
    $lock = \Drupal::lock()->acquire('stuff_lock');
    // ...
  }

  // The preferred way: dependency injected code.
  function hook_do_stuff() {
    // Move the actual implementation to a class and instantiate it.
    $instance = new StuffDoingClass(\Drupal::lock());
    $instance->doStuff();

    // Or, even better, rely on the service container to avoid hard coding a
    // specific interface implementation, so that the actual logic can be
    // swapped. This might not always make sense, but in general it is a good
    // practice.
    \Drupal::service('stuff.doing')->doStuff();
  }

  interface StuffDoingInterface {
    public function doStuff();
  }

  class StuffDoingClass implements StuffDoingInterface {
    protected $lockBackend;

    public function __construct(LockBackendInterface $lock_backend) {
      $this->lockBackend = $lock_backend;
    }

    public function doStuff() {
      $lock = $this->lockBackend->acquire('stuff_lock');
      // ...
    }
  }

Hierarchy

See also

\Drupal\Core\DrupalKernel

File

core/lib/Drupal.php, line 79
Contains \Drupal.

Members

Name Modifiers Type Description
Drupal::$container protected static property The currently active container object, or NULL if not initialized yet.
Drupal::accessManager public static function Returns the access manager service.
Drupal::cache public static function Returns the requested cache bin.
Drupal::config public static function Retrieves a configuration object.
Drupal::configFactory public static function Retrieves the configuration factory.
Drupal::CORE_COMPATIBILITY constant Core API compatibility.
Drupal::CORE_MINIMUM_SCHEMA_VERSION constant Core minimum schema version.
Drupal::csrfToken public static function Returns the CSRF token manager service.
Drupal::currentUser public static function Gets the current active user.
Drupal::database public static function Returns the current primary database.
Drupal::destination public static function Returns the redirect destination helper.
Drupal::entityDefinitionUpdateManager public static function Returns the entity definition update manager.
Drupal::entityManager Deprecated public static function Retrieves the entity manager service.
Drupal::entityQuery public static function Returns the entity query object for this entity type.
Drupal::entityQueryAggregate public static function Returns the entity query aggregate object for this entity type.
Drupal::entityTypeManager public static function Retrieves the entity type manager.
Drupal::flood public static function Returns the flood instance.
Drupal::formBuilder public static function Returns the form builder service.
Drupal::getContainer public static function Returns the currently active global container.
Drupal::hasContainer public static function Returns TRUE if the container has been initialized, FALSE otherwise.
Drupal::hasRequest public static function Indicates if there is a currently active request object.
Drupal::hasService public static function Indicates if a service is defined in the container.
Drupal::httpClient public static function Returns the default http client.
Drupal::isConfigSyncing public static function Gets the syncing state.
Drupal::keyValue public static function Returns a key/value storage collection.
Drupal::keyValueExpirable public static function Returns an expirable key value store collection.
Drupal::l Deprecated public static function Renders a link with a given link text and Url object.
Drupal::languageManager public static function Returns the language manager service.
Drupal::linkGenerator public static function Returns the link generator service.
Drupal::lock public static function Returns the locking layer instance.
Drupal::logger public static function Returns a channel logger object.
Drupal::menuTree public static function Returns the menu tree.
Drupal::moduleHandler public static function Returns the module handler.
Drupal::pathValidator public static function Returns the path validator.
Drupal::queue public static function Returns a queue for the given queue name.
Drupal::request public static function Retrieves the currently active request object.
Drupal::requestStack public static function Retrives the request stack.
Drupal::root public static function Gets the app root.
Drupal::routeMatch public static function Retrieves the currently active route match object.
Drupal::service public static function Retrieves a service from the container.
Drupal::setContainer public static function Sets a new global container.
Drupal::state public static function Returns the state storage service.
Drupal::theme public static function Gets the theme service.
Drupal::token public static function Returns the token service.
Drupal::translation public static function Returns the string translation service.
Drupal::transliteration public static function Returns the transliteration service.
Drupal::typedDataManager public static function Returns the typed data manager service.
Drupal::unsetContainer public static function Unsets the global container.
Drupal::url Deprecated public static function Generates a URL string for a specific route based on the given parameters.
Drupal::urlGenerator public static function Returns the url generator service.
Drupal::VERSION constant The current system version.
doc_Drupal
2016-10-29 09:02:42
Comments
Leave a Comment

Please login to continue.