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
| Name | Type | Description |
|---|---|---|
| $logger | ?Psr\Log\LoggerInterface |
ContractResolver::validate()
public function validate(array $plugins): voidValidate that all required dependencies are satisfied.
Parameters
| Name | Type | Description |
|---|---|---|
| $plugins | array<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): arraySort plugins by dependency order (topological sort). Plugins with no dependencies come first.
Parameters
| Name | Type | Description |
|---|---|---|
| $plugins | array<array{name: string, class: string, provides?: array<string>, requires?: array<string>}> |
ContractResolver::getAvailableContracts()
public function getAvailableContracts(array $plugins): arrayGet all available contracts from plugins.
Parameters
| Name | Type | Description |
|---|---|---|
| $plugins | array<array{name?: string, provides?: array<string>}> |
Returns
Map of contract => providing plugin name