function PluginManager::getPluginCapability
@template CapabilityClass of Capability
@phpstan-param class-string<CapabilityClass> $capabilityClassName @phpstan-return null|CapabilityClass
Parameters
class-string<CapabilityClass> $capabilityClassName The fully qualified name of the API interface which the plugin may provide: an implementation of.
array<mixed> $ctorArgs Arguments passed to Capability's constructor.: Keeping it an array will allow future values to be passed w\o changing the signature.
1 call to PluginManager::getPluginCapability()
- PluginManager::getPluginCapabilities in vendor/
composer/ composer/ src/ Composer/ Plugin/ PluginManager.php - @template CapabilityClass of Capability
File
-
vendor/
composer/ composer/ src/ Composer/ Plugin/ PluginManager.php, line 601
Class
- PluginManager
- Plugin manager
Namespace
Composer\PluginCode
public function getPluginCapability(PluginInterface $plugin, $capabilityClassName, array $ctorArgs = []) : ?Capability {
if ($capabilityClass = $this->getCapabilityImplementationClassName($plugin, $capabilityClassName)) {
if (!class_exists($capabilityClass)) {
throw new \RuntimeException("Cannot instantiate Capability, as class {$capabilityClass} from plugin " . get_class($plugin) . " does not exist.");
}
$ctorArgs['plugin'] = $plugin;
$capabilityObj = new $capabilityClass($ctorArgs);
// FIXME these could use is_a and do the check *before* instantiating once drop support for php<5.3.9
if (!$capabilityObj instanceof Capability || !$capabilityObj instanceof $capabilityClassName) {
throw new \RuntimeException('Class ' . $capabilityClass . ' must implement both Composer\\Plugin\\Capability\\Capability and ' . $capabilityClassName . '.');
}
return $capabilityObj;
}
return null;
}