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

Breadcrumb

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

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\Plugin

Code

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;
}
RSS feed
Powered by Drupal