webprofiler-10.0.x-dev/src/Twig/Extension/ComponentExtension.php

src/Twig/Extension/ComponentExtension.php
<?php

declare(strict_types=1);

namespace Drupal\webprofiler\Twig\Extension;

use Drupal\Core\Theme\ComponentPluginManager;
use Drupal\webprofiler\Twig\ComponentNodeVisitor;
use Twig\Extension\AbstractExtension;

/**
 * Twig extension relate to PHP code and used by Webprofiler.
 */
class ComponentExtension extends AbstractExtension {

  /**
   * ComponentExtension constructor.
   *
   * @param \Drupal\Core\Theme\ComponentPluginManager $pluginManager
   *   The component plugin manager.
   */
  public function __construct(
    private readonly ComponentPluginManager $pluginManager,
  ) {}

  /**
   * {@inheritdoc}
   */
  public function getNodeVisitors(): array {
    // "webprofiler.theme" service isn't injected to prevent circular reference.
    /** @var \Drupal\webprofiler\DataCollector\ThemeDataCollector $dataCollector */
    // @phpstan-ignore-next-line
    $dataCollector = \Drupal::service('webprofiler.theme');

    return [new ComponentNodeVisitor($this->pluginManager, $dataCollector)];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc