Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ServiceSubscriberInterface.php

interface ServiceSubscriberInterface

A ServiceSubscriber exposes its dependencies via the static {@link getSubscribedServices} method.

The getSubscribedServices method returns an array of service types required by such instances, optionally keyed by the service names used internally. Service types that start with an interrogation mark "?" are optional, while the other ones are mandatory service dependencies.

The injected service locators SHOULD NOT allow access to any other services not specified by the method.

It is expected that ServiceSubscriber instances consume PSR-11-based service locators internally. This interface does not dictate any injection method for these service locators, although constructor injection is recommended.

@author Nicolas Grekas <p@tchwork.com>

Hierarchy

  • interface \Symfony\Contracts\Service\ServiceSubscriberInterface

Expanded class hierarchy of ServiceSubscriberInterface

All classes that implement ServiceSubscriberInterface

4 files declare their use of ServiceSubscriberInterface
AutowireLocator.php in vendor/symfony/dependency-injection/Attribute/AutowireLocator.php
RegisterServiceSubscribersPass.php in vendor/symfony/dependency-injection/Compiler/RegisterServiceSubscribersPass.php
ServiceLocator.php in vendor/symfony/dependency-injection/ServiceLocator.php
SubscribedService.php in vendor/symfony/service-contracts/Attribute/SubscribedService.php

File

vendor/symfony/service-contracts/ServiceSubscriberInterface.php, line 31

Namespace

Symfony\Contracts\Service
View source
interface ServiceSubscriberInterface {
    
    /**
     * Returns an array of service types (or {@see SubscribedService} objects) required
     * by such instances, optionally keyed by the service names used internally.
     *
     * For mandatory dependencies:
     *
     *  * ['logger' => 'Psr\Log\LoggerInterface'] means the objects use the "logger" name
     *    internally to fetch a service which must implement Psr\Log\LoggerInterface.
     *  * ['loggers' => 'Psr\Log\LoggerInterface[]'] means the objects use the "loggers" name
     *    internally to fetch an iterable of Psr\Log\LoggerInterface instances.
     *  * ['Psr\Log\LoggerInterface'] is a shortcut for
     *  * ['Psr\Log\LoggerInterface' => 'Psr\Log\LoggerInterface']
     *
     * otherwise:
     *
     *  * ['logger' => '?Psr\Log\LoggerInterface'] denotes an optional dependency
     *  * ['loggers' => '?Psr\Log\LoggerInterface[]'] denotes an optional iterable dependency
     *  * ['?Psr\Log\LoggerInterface'] is a shortcut for
     *  * ['Psr\Log\LoggerInterface' => '?Psr\Log\LoggerInterface']
     *
     * additionally, an array of {@see SubscribedService}'s can be returned:
     *
     *  * [new SubscribedService('logger', Psr\Log\LoggerInterface::class)]
     *  * [new SubscribedService(type: Psr\Log\LoggerInterface::class, nullable: true)]
     *  * [new SubscribedService('http_client', HttpClientInterface::class, attributes: new Target('githubApi'))]
     *
     * @return string[]|SubscribedService[] The required service types, optionally keyed by service names
     */
    public static function getSubscribedServices() : array;

}

Members

Title Sort descending Modifiers Object type Summary
ServiceSubscriberInterface::getSubscribedServices public static function Returns an array of service types (or {by such instances, optionally keyed by the service names used internally.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal