The hook boot (hook_boot()) and hook init (hook_init()) are removed from drupal 8. How to use those events and trigger on boot ?
What are the possibilities to replace Hook Boot and Hook Init ?
Use Event Subscriber service.
The EventSubscriber allow to execute an action on boot as hook_boot or hook_init of drupal 7.
Example.
# file should be in /mymodule/mymodule.services.ymlservices:
 mymodule.mymodule_subscriber:
   class: Drupal\mymodule\MyModuleSubscriber
   tags:
     - { name: 'event_subscriber' }
// file shoud be in /mymodule/src/MyModuleSubscriber.php<?php
/**
 * @file
 * Contains \Drupal\mymodule\MyModuleSubscriber.
 */
namespace Drupal\mymodule;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
 * Provides a MyModuleSubscriber.
 */
class MyModuleSubscriber implements EventSubscriberInterface {
Â
/**
  * // only if KernelEvents::REQUEST !!!
  * @see Symfony\Component\HttpKernel\KernelEvents for details
  *
  * @param Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  *  The Event to process.
  */
 public function MyModuleLoad(GetResponseEvent $event) {
   // @todo remove this debug code
   drupal_set_message('MyModule: subscribed');
 }
Â
/**
  * {@inheritdoc}
  */
 static function getSubscribedEvents() {
   $events[KernelEvents::REQUEST][] = array('MyModuleLoad', 20); // Like hook_init (Cached)
   // Priority greater than 200 alow to skip caching, like functionality of hook_boot.
   //$events[KernelEvents::REQUEST][] = array('MyModuleLoad', 300); // Like hook_boot (not Cached)
   return $events;
 }
}
Â
Â
Using StackMiddleware (Not tested)
Example :
mymodule/mymodule.services.yml
services:
 http_middleware.mymodule:
   class: Drupal\mymodule\StackMiddleware\MyModule
   tags:
     - { name: http_middleware, priority: 180, responder: true }
mymodule/src/StackMiddleware/MyModule.php
<?php
namespace Drupal\mymodule\StackMiddleware;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;
/**
 * Provides a HTTP middleware.
 */
class MyModule implements HttpKernelInterface {
 /**
  * The wrapped HTTP kernel.
  *
  * @var \Symfony\Component\HttpKernel\HttpKernelInterface
  */
 protected $httpKernel;
 /**
  * Constructs a MyModule object.
  *
  * @param \Symfony\Component\HttpKernel\HttpKernelInterface $kernel
  *  The decorated kernel.
  * @param mixed $optional_argument
  *  (optional) An optional argument.
  */
 public function __construct(HttpKernelInterface $http_kernel) {
   $this->httpKernel = $http_kernel;
 }
 /**
  * {@inheritdoc}
  */
 public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
   // Your code here.
   return $this->httpKernel->handle($request, $type, $catch);
 }
}
Â
Examples from : https://www.drupal.org/node/1909596
Comments