ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
FSLoader.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
30 
42 class FSLoader implements Loader
43 {
44  use LoaderHelper;
45 
46  public function __construct(
47  private RendererFactory $default_renderer_factory,
48  private RendererFactory $glyph_renderer_factory,
49  private RendererFactory $field_renderer_factory,
50  private RendererFactory $message_box_renderer_factory,
51  private RendererFactory $form_renderer_factory,
52  private RendererFactory $menu_renderer_factory,
53  ) {
54  }
55 
59  public function getRendererFor(Component $component, array $contexts): ComponentRenderer
60  {
61  $context_names = $this->getContextNames($contexts);
62  $factory = $this->getRendererFactoryFor($component);
63  return $factory->getRendererInContext($component, $context_names);
64  }
65 
69  public function getRendererFactoryFor(Component $component): RendererFactory
70  {
71  if ($component instanceof Glyph) {
72  return $this->glyph_renderer_factory;
73  }
74  if ($component instanceof FormInput) {
75  return $this->field_renderer_factory;
76  }
77  if ($component instanceof MessageBox) {
78  return $this->message_box_renderer_factory;
79  }
80  if ($component instanceof Form) {
81  return $this->form_renderer_factory;
82  }
83  if ($component instanceof Menu) {
84  return $this->menu_renderer_factory;
85  }
86 
87  return $this->default_renderer_factory;
88  }
89 }
Loads renderers for components from the file system.
Definition: FSLoader.php:42
An entity that renders components to a string output.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This implements commonalities between all forms.
Definition: Form.php:33
__construct(private RendererFactory $default_renderer_factory, private RendererFactory $glyph_renderer_factory, private RendererFactory $field_renderer_factory, private RendererFactory $message_box_renderer_factory, private RendererFactory $form_renderer_factory, private RendererFactory $menu_renderer_factory,)
Definition: FSLoader.php:46
This is the interface that components should use if they want to load specific renderers.
getRendererFactoryFor(Component $component)
Definition: FSLoader.php:69
Loads renderers for components.
Definition: Loader.php:29
getRendererFor(Component $component, array $contexts)
Definition: FSLoader.php:59