Skip to content
docsv0.1.0

ContractResolver

ContractResolver - Validates and orders plugins by their contracts. Handles: - Validation of required dependencies (fail-fast on missing) - Warning for missing suggested dependencies - Topological sorting for proper load order

ContractResolver::__construct()

public function __construct(?Psr\Log\LoggerInterface $logger = null):

Parameters

Parameters of __construct()
NameTypeDescription
$logger?Psr\Log\LoggerInterface

ContractResolver::validate()

public function validate(array $plugins): void

Validate that all required dependencies are satisfied.

Parameters

Parameters of validate()
NameTypeDescription
$pluginsarray<array{name?: string, provides?: array<string>, requires?: array<string>, suggests?: array<string>}>

Throws

\RuntimeException if a required dependency is missing

ContractResolver::getLoadOrder()

public function getLoadOrder(array $plugins): array

Sort plugins by dependency order (topological sort). Plugins with no dependencies come first.

Parameters

Parameters of getLoadOrder()
NameTypeDescription
$pluginsarray<array{name: string, class: string, provides?: array<string>, requires?: array<string>}>

ContractResolver::getAvailableContracts()

public function getAvailableContracts(array $plugins): array

Get all available contracts from plugins.

Parameters

Parameters of getAvailableContracts()
NameTypeDescription
$pluginsarray<array{name?: string, provides?: array<string>}>

Returns

Map of contract => providing plugin name