class Configurator
Same name in this branch
- 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
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\InstrumentationScopeView 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<InstrumentationScopeInterface, T> |
Configurator::$configurators | private | property | @var list<ConfiguratorClosure> |
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 |