class MonkeysInTheControlRoom
A http middleware designed to cause bedlam.
Hierarchy
- class \Drupal\error_service_test\MonkeysInTheControlRoom implements \Symfony\Component\HttpKernel\HttpKernelInterface
 
Expanded class hierarchy of MonkeysInTheControlRoom
See also
error_service_test.services.yml
1 string reference to 'MonkeysInTheControlRoom'
- error_service_test.services.yml in core/
modules/ system/ tests/ modules/ error_service_test/ error_service_test.services.yml  - core/modules/system/tests/modules/error_service_test/error_service_test.services.yml
 
1 service uses MonkeysInTheControlRoom
- http_middleware.monkeys in core/
modules/ system/ tests/ modules/ error_service_test/ error_service_test.services.yml  - Drupal\error_service_test\MonkeysInTheControlRoom
 
File
- 
              core/
modules/ system/ tests/ modules/ error_service_test/ src/ MonkeysInTheControlRoom.php, line 15  
Namespace
Drupal\error_service_testView source
class MonkeysInTheControlRoom implements HttpKernelInterface {
  
  /**
   * The app kernel.
   *
   * @var \Symfony\Component\HttpKernel\HttpKernelInterface
   */
  protected $app;
  
  /**
   * The settings.
   */
  protected Settings $settings;
  
  /**
   * MonkeysInTheControlRoom constructor.
   *
   * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
   *   The wrapper HTTP kernel.
   * @param \Drupal\Core\Site\Settings $settings
   *   The settings object.
   */
  public function __construct(HttpKernelInterface $app, Settings $settings) {
    $this->app = $app;
    $this->settings = $settings;
  }
  
  /**
   * {@inheritdoc}
   */
  public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = TRUE) : Response {
    if (\Drupal::state()->get('error_service_test.break_bare_html_renderer')) {
      // Let the bedlam begin.
      // 1) Force a container rebuild.
      /** @var \Drupal\Core\DrupalKernelInterface $kernel */
      $kernel = \Drupal::service('kernel');
      $kernel->rebuildContainer();
      // 2) Fetch the in-situ container builder.
      $container = ErrorServiceTestServiceProvider::$containerBuilder;
      // Ensure the compiler pass worked.
      if (!$container) {
        throw new \Exception('Oh oh, monkeys stole the ServiceProvider.');
      }
      // Stop the theme manager from being found - and triggering error
      // maintenance mode.
      $container->removeDefinition('theme.manager');
      // Mash. Mash. Mash.
      \Drupal::setContainer($container);
      throw new \Exception('Oh oh, bananas in the instruments.');
    }
    if (\Drupal::state()->get('error_service_test.break_logger')) {
      throw new \Exception('Deforestation');
    }
    return $this->app
      ->handle($request, $type, $catch);
  }
}
Members
| Title Sort descending | Modifiers | Object type | Summary | 
|---|---|---|---|
| MonkeysInTheControlRoom::$app | protected | property | The app kernel. | 
| MonkeysInTheControlRoom::$settings | protected | property | The settings. | 
| MonkeysInTheControlRoom::handle | public | function | |
| MonkeysInTheControlRoom::__construct | public | function | MonkeysInTheControlRoom constructor. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.