/**
  * Set class properties and instantiate a widget object.
  *
  * @param $params
  *
  * @throws InvalidWidgetClassException
  */
 protected function instantiateWidget(array $params = [])
 {
     WidgetId::increment();
     $this->widgetName = $this->parseFullWidgetNameFromString(array_shift($params));
     $this->widgetFullParams = $params;
     $this->widgetConfig = (array) array_shift($params);
     $this->widgetParams = $params;
     $rootNamespace = $this->app->config('laravel-widgets.default_namespace', $this->app->getNamespace() . 'Widgets');
     $fqcn = $rootNamespace . '\\' . $this->widgetName;
     $widgetClass = class_exists($fqcn) ? $fqcn : $this->widgetName;
     if (!is_subclass_of($widgetClass, 'Arrilot\\Widgets\\AbstractWidget')) {
         throw new InvalidWidgetClassException('Class "' . $widgetClass . '" must extend "Arrilot\\Widgets\\AbstractWidget" class');
     }
     $this->widget = new $widgetClass($this->widgetConfig);
 }
 /**
  * Set class properties and instantiate a widget object.
  *
  * @param $params
  *
  * @throws InvalidWidgetClassException
  */
 protected function instantiateWidget(array $params = [])
 {
     WidgetId::increment();
     $this->widgetName = $this->parseFullWidgetNameFromString(array_shift($params));
     $this->widgetFullParams = $params;
     $this->widgetConfig = (array) array_shift($params);
     $this->widgetParams = $params;
     $widgetClass = class_exists($this->widgetName) ? $this->widgetName : $this->config['defaultNamespace'] . '\\' . $this->widgetName;
     $widget = new $widgetClass($this->widgetConfig);
     if ($widget instanceof AbstractWidget === false) {
         throw new InvalidWidgetClassException();
     }
     $this->widget = $widget;
 }