ConfigServiceProvider.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace Grav\Common\Service;
  3. use Grav\Common\Config\Config;
  4. use Pimple\Container;
  5. use Pimple\ServiceProviderInterface;
  6. use RocketTheme\Toolbox\Blueprints\Blueprints;
  7. /**
  8. * The Config class contains configuration information.
  9. *
  10. * @author RocketTheme
  11. * @license MIT
  12. */
  13. class ConfigServiceProvider implements ServiceProviderInterface
  14. {
  15. private $environment;
  16. private $setup;
  17. public function register(Container $container)
  18. {
  19. $self = $this;
  20. // Pre-load setup.php as it contains our initial configuration.
  21. $file = GRAV_ROOT . '/setup.php';
  22. $this->setup = is_file($file) ? (array) include $file : [];
  23. $this->environment = isset($this->setup['environment']) ? $this->setup['environment'] : null;
  24. $container['blueprints'] = function ($c) use ($self) {
  25. return $self->loadMasterBlueprints($c);
  26. };
  27. $container['config'] = function ($c) use ($self) {
  28. return $self->loadMasterConfig($c);
  29. };
  30. }
  31. public function loadMasterConfig(Container $container)
  32. {
  33. $environment = $this->getEnvironment($container);
  34. $config = new Config($this->setup, $container, $environment);
  35. return $config;
  36. }
  37. public function loadMasterBlueprints(Container $container)
  38. {
  39. $environment = $this->getEnvironment($container);
  40. $file = CACHE_DIR . 'compiled/blueprints/master-'.$environment.'.php';
  41. $data = is_file($file) ? (array) include $file : [];
  42. return new Blueprints($data, $container);
  43. }
  44. public function getEnvironment(Container $container)
  45. {
  46. if (!isset($this->environment)) {
  47. $this->environment = $container['uri']->environment();
  48. }
  49. return $this->environment;
  50. }
  51. }