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

Breadcrumb

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

class DrupalServiceDefinition

Hierarchy

  • class \mglaman\PHPStanDrupal\Drupal\DrupalServiceDefinition

Expanded class hierarchy of DrupalServiceDefinition

4 files declare their use of DrupalServiceDefinition
DrupalClassResolverReturnType.php in vendor/mglaman/phpstan-drupal/src/Type/DrupalClassResolverReturnType.php
DrupalServiceDynamicReturnTypeExtension.php in vendor/mglaman/phpstan-drupal/src/Type/DrupalServiceDynamicReturnTypeExtension.php
GetDeprecatedServiceRule.php in vendor/mglaman/phpstan-drupal/src/Rules/Deprecations/GetDeprecatedServiceRule.php
StaticServiceDeprecatedServiceRule.php in vendor/mglaman/phpstan-drupal/src/Rules/Deprecations/StaticServiceDeprecatedServiceRule.php

File

vendor/mglaman/phpstan-drupal/src/Drupal/DrupalServiceDefinition.php, line 12

Namespace

mglaman\PHPStanDrupal\Drupal
View source
class DrupalServiceDefinition {
    
    /**
     * @var string
     */
    private $id;
    
    /**
     * @var string|null
     */
    private $class;
    
    /**
     * @var bool
     */
    private $public;
    
    /**
     * @var bool
     */
    private $deprecated = false;
    
    /**
     * @var string|null
     */
    private $deprecationTemplate;
    
    /**
     * @var string
     */
    private static $defaultDeprecationTemplate = 'The "%service_id%" service is deprecated. You should stop using it, as it will soon be removed.';
    
    /**
     * @var string|null
     */
    private $alias;
    
    /**
     * @var array<string, \mglaman\PHPStanDrupal\Drupal\DrupalServiceDefinition>
     */
    private $decorators = [];
    public function __construct(string $id, ?string $class, bool $public = true, ?string $alias = null) {
        $this->id = $id;
        $this->class = $class;
        $this->public = $public;
        $this->alias = $alias;
    }
    public function setDeprecated(bool $status = true, ?string $template = null) : void {
        $this->deprecated = $status;
        $this->deprecationTemplate = $template;
    }
    
    /**
     * @return string
     */
    public function getId() : string {
        return $this->id;
    }
    
    /**
     * @return string|null
     */
    public function getClass() : ?string {
        return $this->class;
    }
    
    /**
     * @return bool
     */
    public function isPublic() : bool {
        return $this->public;
    }
    
    /**
     * @return string|null
     */
    public function getAlias() : ?string {
        return $this->alias;
    }
    public function isDeprecated() : bool {
        return $this->deprecated;
    }
    public function getDeprecatedDescription() : string {
        return str_replace('%service_id%', $this->id, $this->deprecationTemplate ?? self::$defaultDeprecationTemplate);
    }
    public function getType() : Type {
        // Work around Drupal misusing the SplString class for string
        // pseudo-services such as 'app.root'.
        // @see https://www.drupal.org/project/drupal/issues/3074585
        if ($this->getClass() === 'SplString') {
            return new StringType();
        }
        $decorating_services = $this->getDecorators();
        if (count($decorating_services) !== 0) {
            $combined_services = [];
            $combined_services[] = new ObjectType($this->getClass() ?? $this->id);
            foreach ($decorating_services as $service_id => $service_definition) {
                $combined_services[] = $service_definition->getType();
            }
            return TypeCombinator::union(...$combined_services);
        }
        return new ObjectType($this->getClass() ?? $this->id);
    }
    public function addDecorator(DrupalServiceDefinition $definition) : void {
        $this->decorators[$definition->getId()] = $definition;
    }
    
    /**
     * @return array<string, \mglaman\PHPStanDrupal\Drupal\DrupalServiceDefinition>
     */
    public function getDecorators() : array {
        return $this->decorators;
    }

}

Members

Title Sort descending Modifiers Object type Summary
DrupalServiceDefinition::$alias private property
DrupalServiceDefinition::$class private property
DrupalServiceDefinition::$decorators private property
DrupalServiceDefinition::$defaultDeprecationTemplate private static property
DrupalServiceDefinition::$deprecated private property
DrupalServiceDefinition::$deprecationTemplate private property
DrupalServiceDefinition::$id private property
DrupalServiceDefinition::$public private property
DrupalServiceDefinition::addDecorator public function
DrupalServiceDefinition::getAlias public function
DrupalServiceDefinition::getClass public function
DrupalServiceDefinition::getDecorators public function
DrupalServiceDefinition::getDeprecatedDescription public function
DrupalServiceDefinition::getId public function
DrupalServiceDefinition::getType public function
DrupalServiceDefinition::isDeprecated public function
DrupalServiceDefinition::isPublic public function
DrupalServiceDefinition::setDeprecated public function
DrupalServiceDefinition::__construct public function

API Navigation

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