[ 'view' => ListListBlock::class, 'title' => _t('listings', 'List'), 'title_search' => _t('search', 'List'), ], self::GALLERY => [ 'view' => GalleryListBlock::class, 'title' => _t('listings', 'Gallery'), 'title_search' => _t('search', 'Gallery'), ], self::MAP => [ 'view' => MapListBlock::class, 'title' => _t('listings', 'Map'), 'title_search' => _t('search', 'On Map'), ], ]); # Unify for select options: id, title foreach ($views as $key => $view) { $views[$key]['id'] = $key; } return $views; } /** * Create list using key * @param string $key * @param array $settings * @return ListListBlock|mixed */ public static function create(string $key, array $settings = []) { $views = static::views(); $class = $views[$key]['view'] ?? reset($views)['view']; return new $class($settings); } }