StreamsServiceProvider.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace Grav\Common\Service;
  3. use Grav\Common\Config\Config;
  4. use Pimple\Container;
  5. use RocketTheme\Toolbox\DI\ServiceProviderInterface;
  6. use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator;
  7. use RocketTheme\Toolbox\StreamWrapper\ReadOnlyStream;
  8. use RocketTheme\Toolbox\StreamWrapper\Stream;
  9. use RocketTheme\Toolbox\StreamWrapper\StreamBuilder;
  10. class StreamsServiceProvider implements ServiceProviderInterface
  11. {
  12. public function register(Container $container)
  13. {
  14. $container['locator'] = function($c) {
  15. $locator = new UniformResourceLocator(ROOT_DIR);
  16. /** @var Config $config */
  17. $config = $c['config'];
  18. $config->initializeLocator($locator);
  19. return $locator;
  20. };
  21. $container['streams'] = function($c) {
  22. /** @var Config $config */
  23. $config = $c['config'];
  24. /** @var UniformResourceLocator $locator */
  25. $locator = $c['locator'];
  26. // Set locator to both streams.
  27. Stream::setLocator($locator);
  28. ReadOnlyStream::setLocator($locator);
  29. return new StreamBuilder($config->getStreams($c));
  30. };
  31. }
  32. }