original_string: protected function initComponents()
      {
          if (!$this->layout->isFallBack()) {
              foreach ($this->layout->settings['components'] as $component => $properties) {
                  list($name, $alias) = strpos($component, ' ')
                      ? explode(' ', $component)
                      : [$component, $component];
  
                  $this->addComponent($name, $alias, $properties, true);
              }
          }
  
          foreach ($this->page->settings['components'] as $component => $properties) {
              list($name, $alias) = strpos($component, ' ')
                  ? explode(' ', $component)
                  : [$component, $component];
  
              $this->addComponent($name, $alias, $properties);
          }
  
          /**
           * @event cms.page.initComponents
           * Fires after the components for the given page have been initialized
           *
           * Example usage:
           *
           *     Event::listen('cms.page.initComponents', function ((\Cms\Classes\Controller) $controller, (\Cms\Classes\Page) $page, (\Cms\Classes\Layout) $layout) {
           *         \Log::info($page->title . ' components have been initialized');
           *     });
           *
           * Or
           *
           *     $CmsController->bindEvent('page.initComponents', function ((\Cms\Classes\Page) $page, (\Cms\Classes\Layout) $layout) {
           *         \Log::info($page->title . ' components have been initialized');
           *     });
           *
           */
          $this->fireSystemEvent('cms.page.initComponents', [$this->page, $this->layout]);
      }
code: protected function initComponents()
      {
          if (!$this->layout->isFallBack()) {
              foreach ($this->layout->settings['components'] as $component => $properties) {
                  list($name, $alias) = strpos($component, ' ')
                      ? explode(' ', $component)
                      : [$component, $component];
  
                  $this->addComponent($name, $alias, $properties, true);
              }
          }
  
          foreach ($this->page->settings['components'] as $component => $properties) {
              list($name, $alias) = strpos($component, ' ')
                  ? explode(' ', $component)
                  : [$component, $component];
  
              $this->addComponent($name, $alias, $properties);
          }
  
          /**
           * @event cms.page.initComponents
           * Fires after the components for the given page have been initialized
           *
           * Example usage:
           *
           *     Event::listen('cms.page.initComponents', function ((\Cms\Classes\Controller) $controller, (\Cms\Classes\Page) $page, (\Cms\Classes\Layout) $layout) {
           *         \Log::info($page->title . ' components have been initialized');
           *     });
           *
           * Or
           *
           *     $CmsController->bindEvent('page.initComponents', function ((\Cms\Classes\Page) $page, (\Cms\Classes\Layout) $layout) {
           *         \Log::info($page->title . ' components have been initialized');
           *     });
           *
           */
          $this->fireSystemEvent('cms.page.initComponents', [$this->page, $this->layout]);
      }
code_tokens: protected function initComponents ( ) { if ( ! $ this -> layout -> isFallBack ( ) ) { foreach ( $ this -> layout -> settings [ 'components' ] as $ component => $ properties ) { list ( $ name , $ alias ) = strpos ( $ component , ' ' ) ? explode ( ' ' , $ component ) : [ $ component , $ component ] ; $ this -> addComponent ( $ name , $ alias , $ properties , true ) ; } } foreach ( $ this -> page -> settings [ 'components' ] as $ component => $ properties ) { list ( $ name , $ alias ) = strpos ( $ component , ' ' ) ? explode ( ' ' , $ component ) : [ $ component , $ component ] ; $ this -> addComponent ( $ name , $ alias , $ properties ) ; } /**
           * @event cms.page.initComponents
           * Fires after the components for the given page have been initialized
           *
           * Example usage:
           *
           *     Event::listen('cms.page.initComponents', function ((\Cms\Classes\Controller) $controller, (\Cms\Classes\Page) $page, (\Cms\Classes\Layout) $layout) {
           *         \Log::info($page->title . ' components have been initialized');
           *     });
           *
           * Or
           *
           *     $CmsController->bindEvent('page.initComponents', function ((\Cms\Classes\Page) $page, (\Cms\Classes\Layout) $layout) {
           *         \Log::info($page->title . ' components have been initialized');
           *     });
           *
           */ $ this -> fireSystemEvent ( 'cms.page.initComponents' , [ $ this -> page , $ this -> layout ] ) ; }
docstring: Initializes the components for the layout and page.
  @return void
docstring_tokens: Initializes the components for the layout and page .