Просмотр файла app/Services/Setting.php

Размер файла: 836B
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Services;
  6.  
  7. class Setting
  8. {
  9. private array $setting;
  10.  
  11. public function __construct(array $setting)
  12. {
  13. $this->setting = $setting;
  14. }
  15.  
  16. /**
  17. * Get setting by key
  18. *
  19. * @param string $key
  20. * @param mixed|null $default
  21. *
  22. * @return mixed
  23. */
  24. public function get(string $key, mixed $default = null): mixed
  25. {
  26. $setting = $this->setting;
  27.  
  28. if (! str_contains($key, '.')) {
  29. return $setting[$key] ?? $default;
  30. }
  31.  
  32. foreach (explode('.', $key) as $segment) {
  33. if (is_array($setting) && array_key_exists($segment, $setting)) {
  34. $setting = $setting[$segment];
  35. } else {
  36. return $default;
  37. }
  38. }
  39.  
  40. return $setting;
  41. }
  42. }