objectManager = $objectManager; $this->types = $types; } /** * Get layout by type * * @param string $layoutType * @param array $arguments * @return LayoutInterface */ public function create($layoutType, array $arguments = []) { if (!isset($this->types[$layoutType])) { throw new \InvalidArgumentException(sprintf('Unknown layout type "%s"', $layoutType)); } $defArgs = $this->types[$layoutType]; $class = isset($defArgs['class']) ? $defArgs['class'] : self::DEFAULT_CLASS; unset($defArgs['class']); if ($defArgs) { $arguments = array_merge($defArgs, $arguments); } return $this->objectManager->create($class, $arguments); } }