/home/techb158/immovalet.com/platform/packages/widget/src/Factories
Edit: /home/techb158/immovalet.com/platform/packages/widget/src/Factories/AbstractWidgetFactory.php (3060B)
app = $app;
}
/**
* Magic method that catches all widget calls.
*
* @param string $widgetName
* @param array $params
* @return mixed
*/
public function __call($widgetName, array $params = [])
{
array_unshift($params, $widgetName);
return call_user_func_array([$this, 'run'], $params);
}
/**
* Set class properties and instantiate a widget object.
*
* @param array $params
*
* @throws InvalidWidgetClassException
* @throws Exception
*/
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 = $this->widgetName;
if (!class_exists($widgetClass, false)) {
throw new Exception($widgetClass . ' is not exists');
}
if (!is_subclass_of($widgetClass, AbstractWidget::class)) {
throw new InvalidWidgetClassException('Class "' . $widgetClass . '" must extend "' . AbstractWidget::class . '" class');
}
$this->widget = new $widgetClass($this->widgetConfig);
}
/**
* Convert stuff like 'profile.feedWidget' to 'Profile\FeedWidget'.
*
* @param string $widgetName
* @return string
*/
protected function parseFullWidgetNameFromString($widgetName)
{
return Str::studly(str_replace('.', '\\', $widgetName));
}
}