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

Breadcrumb

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

class Configurator

Same name in this branch
  1. 11.1.x vendor/open-telemetry/api/Instrumentation/Configurator.php \OpenTelemetry\API\Instrumentation\Configurator

@template T

Hierarchy

  • class \OpenTelemetry\SDK\Common\InstrumentationScope\Configurator

Expanded class hierarchy of Configurator

12 files declare their use of Configurator
Logger.php in vendor/open-telemetry/sdk/Logs/Logger.php
LoggerProvider.php in vendor/open-telemetry/sdk/Logs/LoggerProvider.php
LoggerProviderBuilder.php in vendor/open-telemetry/sdk/Logs/LoggerProviderBuilder.php
Meter.php in vendor/open-telemetry/sdk/Metrics/Meter.php
MeterProvider.php in vendor/open-telemetry/sdk/Metrics/MeterProvider.php

... See full list

4 string references to 'Configurator'
FileLoader::registerClasses in vendor/symfony/dependency-injection/Loader/FileLoader.php
Registers a set of classes as services using PSR-4 for discovery.
XmlDumper::addService in vendor/symfony/dependency-injection/Dumper/XmlDumper.php
XmlFileLoader::parseDefinition in vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
Parses an individual Definition.
YamlFileLoader::parseDefinition in vendor/symfony/dependency-injection/Loader/YamlFileLoader.php

File

vendor/open-telemetry/sdk/Common/InstrumentationScope/Configurator.php, line 17

Namespace

OpenTelemetry\SDK\Common\InstrumentationScope
View source
final class Configurator {
    
    /** @var Closure(InstrumentationScopeInterface): T */
    private readonly Closure $factory;
    
    /** @var WeakMap<InstrumentationScopeInterface, T> */
    private WeakMap $configs;
    
    /** @var list<ConfiguratorClosure> */
    private array $configurators = [];
    
    /**
     * @param Closure(InstrumentationScopeInterface): T $factory
     * @psalm-suppress PropertyTypeCoercion
     */
    public function __construct(Closure $factory) {
        $this->configs = new WeakMap();
        $this->factory = $factory;
    }
    
    /**
     * @param Closure(T, InstrumentationScopeInterface): void $closure
     */
    public function with(Closure $closure, ?string $name, ?string $version = null, ?string $schemaUrl = null) : self {
        $this->configurators[] = $configurator = new ConfiguratorClosure($closure, self::namePattern($name), $version, $schemaUrl);
        foreach ($this->configs as $instrumentationScope => $config) {
            if ($configurator->matches($instrumentationScope)) {
                ($configurator->closure)($config, $instrumentationScope);
            }
        }
        return $this;
    }
    
    /**
     * @return T
     */
    public function resolve(InstrumentationScopeInterface $instrumentationScope) : Config {
        if ($config = $this->configs[$instrumentationScope] ?? null) {
            return $config;
        }
        $config = ($this->factory)($instrumentationScope);
        foreach ($this->configurators as $configurator) {
            if ($configurator->matches($instrumentationScope)) {
                ($configurator->closure)($config, $instrumentationScope);
            }
        }
        return $this->configs[$instrumentationScope] ??= $config;
    }
    
    /**
     * Create a default Configurator for a LoggerConfig
     * @return Configurator<LoggerConfig>
     */
    public static function logger() : self {
        return new Configurator(static fn() => new LoggerConfig());
    }
    
    /**
     * Create a default Configurator for a MeterConfig
     * @return Configurator<MeterConfig>
     */
    public static function meter() : self {
        return new Configurator(static fn() => new MeterConfig());
    }
    
    /**
     * Create a default Configurator for a TracerConfig
     * @return Configurator<TracerConfig>
     */
    public static function tracer() : self {
        return new Configurator(static fn() => new TracerConfig());
    }
    private static function namePattern(?string $name) : ?string {
        return $name !== null ? sprintf('/^%s$/', strtr(preg_quote($name, '/'), [
            '\\?' => '.',
            '\\*' => '.*',
        ])) : null;
    }

}

Members

Title Sort descending Modifiers Object type Summary
Configurator::$configs private property @var WeakMap&lt;InstrumentationScopeInterface, T&gt;
Configurator::$configurators private property @var list&lt;ConfiguratorClosure&gt;
Configurator::$factory private property @var Closure(InstrumentationScopeInterface): T
Configurator::logger public static function Create a default Configurator for a LoggerConfig
Configurator::meter public static function Create a default Configurator for a MeterConfig
Configurator::namePattern private static function
Configurator::resolve public function
Configurator::tracer public static function Create a default Configurator for a TracerConfig
Configurator::with public function
Configurator::__construct public function @psalm-suppress PropertyTypeCoercion

API Navigation

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