Services.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace ModulesGarden\ProxmoxAddon\Core\DependencyInjection;
  3. use ModulesGarden\ProxmoxAddon\Core\ModuleConstants;
  4. use ModulesGarden\ProxmoxAddon\Core\FileReader\Reader;
  5. /**
  6. * Load all services from yml file and mark them as shared in DI container
  7. * @author Mariusz Miodowski <mariusz@modulesgarden.com>
  8. * @package ModulesGarden\DomainOrdersExtended\Core\Services
  9. */
  10. class Services
  11. {
  12. /**
  13. * Services constructor.
  14. */
  15. public function __construct()
  16. {
  17. $this->load();
  18. }
  19. /**
  20. * Load all needed servies to DI container
  21. */
  22. protected function load()
  23. {
  24. foreach ($this->getFilesList() as $file)
  25. {
  26. $servicesList = Reader::read($file)->get();
  27. ;
  28. if (!is_array($servicesList) || empty($servicesList))
  29. {
  30. continue;
  31. }
  32. $this->registerServices($servicesList);
  33. }
  34. }
  35. /**
  36. * Register all services in DI container
  37. * @param $servicesList
  38. */
  39. protected function registerServices($servicesList)
  40. {
  41. foreach ($servicesList as $service)
  42. {
  43. Container::getInstance()->singleton($service);
  44. }
  45. }
  46. /**
  47. * Get file list with servies configuration
  48. * @return array
  49. */
  50. protected function getFilesList()
  51. {
  52. return [
  53. ModuleConstants::getFullPath('app', 'Config', 'di', 'services.yml'),
  54. ModuleConstants::getFullPath('core', 'Config', 'di', 'services.yml')
  55. ];
  56. }
  57. }