class Plugin
Composer plugin for handling drupal scaffold.
@internal
Hierarchy
- class \Drupal\Composer\Plugin\Scaffold\Plugin implements \Composer\Plugin\PluginInterface, \Composer\EventDispatcher\EventSubscriberInterface, \Composer\Plugin\Capable
Expanded class hierarchy of Plugin
20 string references to 'Plugin'
- ActionFormBase::form in core/modules/ action/ src/ Form/ ActionFormBase.php 
- Gets the actual form array to be built.
- block.schema.yml in core/modules/ block/ config/ schema/ block.schema.yml 
- core/modules/block/config/schema/block.schema.yml
- BlockCreationTrait::placeBlock in core/modules/ block/ tests/ src/ Traits/ BlockCreationTrait.php 
- Creates a block instance based on default settings.
- BlockDependenciesTest::createBlock in core/modules/ views/ tests/ src/ Kernel/ Plugin/ BlockDependenciesTest.php 
- Creates a block instance based on default settings.
- ComposerProjectTemplatesTest::testTemplateCreateProject in core/tests/ Drupal/ BuildTests/ Composer/ Template/ ComposerProjectTemplatesTest.php 
- @dataProvider provideTemplateCreateProject
File
- 
              composer/Plugin/ Scaffold/ Plugin.php, line 24 
Namespace
Drupal\Composer\Plugin\ScaffoldView source
class Plugin implements PluginInterface, EventSubscriberInterface, Capable {
  
  /**
   * The Composer service.
   *
   * @var \Composer\Composer
   */
  protected $composer;
  
  /**
   * Composer's I/O service.
   *
   * @var \Composer\IO\IOInterface
   */
  protected $io;
  
  /**
   * The Composer Scaffold handler.
   *
   * @var \Drupal\Composer\Plugin\Scaffold\Handler
   */
  protected $handler;
  
  /**
   * Record whether the 'require' command was called.
   *
   * @param bool
   */
  protected $requireWasCalled;
  
  /**
   * {@inheritdoc}
   */
  public function activate(Composer $composer, IOInterface $io) {
    $this->composer = $composer;
    $this->io = $io;
    $this->requireWasCalled = FALSE;
  }
  
  /**
   * {@inheritdoc}
   */
  public function deactivate(Composer $composer, IOInterface $io) {
  }
  
  /**
   * {@inheritdoc}
   */
  public function uninstall(Composer $composer, IOInterface $io) {
  }
  
  /**
   * {@inheritdoc}
   */
  public function getCapabilities() {
    return [
      CommandProvider::class => ScaffoldCommandProvider::class,
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    // Important note: We only instantiate our handler on "post" events.
    return [
      ScriptEvents::POST_UPDATE_CMD => 'postCmd',
      ScriptEvents::POST_INSTALL_CMD => 'postCmd',
      PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
      PluginEvents::COMMAND => 'onCommand',
    ];
  }
  
  /**
   * Post command event callback.
   *
   * @param \Composer\Script\Event $event
   *   The Composer event.
   */
  public function postCmd(Event $event) {
    $this->handler()
      ->scaffold();
  }
  
  /**
   * Post package event behavior.
   *
   * @param \Composer\Installer\PackageEvent $event
   *   Composer package event sent on install/update/remove.
   */
  public function postPackage(PackageEvent $event) {
    $this->handler()
      ->onPostPackageEvent($event);
  }
  
  /**
   * Pre command event callback.
   *
   * @param \Composer\Plugin\CommandEvent $event
   *   The Composer command event.
   */
  public function onCommand(CommandEvent $event) {
    if ($event->getCommandName() == 'require') {
      if ($this->handler) {
        throw new \Error('Core Scaffold Plugin handler instantiated too early. See https://www.drupal.org/project/drupal/issues/3104922');
      }
      $this->requireWasCalled = TRUE;
    }
  }
  
  /**
   * Instantiates the handler object upon demand.
   *
   * It is dangerous to update a Composer plugin if it loads any classes prior
   * to the `composer update` operation, and later tries to use them in a
   * post-update hook.
   */
  protected function handler() {
    if (!$this->handler) {
      $this->handler = new Handler($this->composer, $this->io);
      // On instantiation of our handler, notify it if the 'require' command
      // was executed.
      if ($this->requireWasCalled) {
        $this->handler
          ->requireWasCalled();
      }
    }
    return $this->handler;
  }
}Members
| Title Sort descending | Modifiers | Object type | Summary | 
|---|---|---|---|
| Plugin::$composer | protected | property | The Composer service. | 
| Plugin::$handler | protected | property | The Composer Scaffold handler. | 
| Plugin::$io | protected | property | Composer's I/O service. | 
| Plugin::$requireWasCalled | protected | property | Record whether the 'require' command was called. | 
| Plugin::activate | public | function | |
| Plugin::deactivate | public | function | |
| Plugin::getCapabilities | public | function | |
| Plugin::getSubscribedEvents | public static | function | |
| Plugin::handler | protected | function | Instantiates the handler object upon demand. | 
| Plugin::onCommand | public | function | Pre command event callback. | 
| Plugin::postCmd | public | function | Post command event callback. | 
| Plugin::postPackage | public | function | Post package event behavior. | 
| Plugin::uninstall | public | function | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
