Config.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace League\Flysystem;
  3. class Config
  4. {
  5. /**
  6. * @var array
  7. */
  8. protected $settings = [];
  9. /**
  10. * @var Config|null
  11. */
  12. protected $fallback;
  13. /**
  14. * Constructor.
  15. *
  16. * @param array $settings
  17. */
  18. public function __construct(array $settings = [])
  19. {
  20. $this->settings = $settings;
  21. }
  22. /**
  23. * Get a setting.
  24. *
  25. * @param string $key
  26. * @param mixed $default
  27. *
  28. * @return mixed config setting or default when not found
  29. */
  30. public function get($key, $default = null)
  31. {
  32. if ( ! array_key_exists($key, $this->settings)) {
  33. return $this->getDefault($key, $default);
  34. }
  35. return $this->settings[$key];
  36. }
  37. /**
  38. * Check if an item exists by key.
  39. *
  40. * @param string $key
  41. *
  42. * @return bool
  43. */
  44. public function has($key)
  45. {
  46. if (array_key_exists($key, $this->settings)) {
  47. return true;
  48. }
  49. return $this->fallback instanceof Config
  50. ? $this->fallback->has($key)
  51. : false;
  52. }
  53. /**
  54. * Try to retrieve a default setting from a config fallback.
  55. *
  56. * @param string $key
  57. * @param mixed $default
  58. *
  59. * @return mixed config setting or default when not found
  60. */
  61. protected function getDefault($key, $default)
  62. {
  63. if ( ! $this->fallback) {
  64. return $default;
  65. }
  66. return $this->fallback->get($key, $default);
  67. }
  68. /**
  69. * Set a setting.
  70. *
  71. * @param string $key
  72. * @param mixed $value
  73. *
  74. * @return $this
  75. */
  76. public function set($key, $value)
  77. {
  78. $this->settings[$key] = $value;
  79. return $this;
  80. }
  81. /**
  82. * Set the fallback.
  83. *
  84. * @param Config $fallback
  85. *
  86. * @return $this
  87. */
  88. public function setFallback(Config $fallback)
  89. {
  90. $this->fallback = $fallback;
  91. return $this;
  92. }
  93. }