_screens = []; $this->_layouts = []; } public function load(string $file): void { $config = Yaml::parseFile($file); foreach ($config['screens'] as $screen_name=>$screen) { $this->_screens[$screen_name] = app()->make(\App\Screen::class, [ 'outputs'=>is_array($screen['output']) ? $screen['output'] : [$screen['output']] ]); } foreach ($config['layouts'] as $layout=>$data) { $this->_layouts[$layout] = app()->make(\App\Layout::class, ['screens'=>$data['screens'], 'links'=>$data['links']]); } } public function getScreen(string $screen): Screen { return $this->_screens[$screen]; } public function getPrimaryScreen(): Screen { return $this->getScreen($this->getPrimaryScreenName()); } public function getPrimaryScreenName(): string { foreach ($this->_screens as $name=>$screen) { if ($screen->isPrimary()) return $name; } } public function getLayout(string $layout): Layout { return $this->_layouts[$layout]; } public function getLayouts(): array { return $this->_layouts; } }