Overview

Namespaces

  • Autarky
    • Config
      • Loaders
    • Console
    • Container
      • Exception
      • Factory
      • Proxy
    • Database
    • Errors
    • Events
    • Files
    • Http
    • Logging
    • Providers
    • Routing
      • Events
    • Testing
    • TwigTemplating
      • Extensions
    • Utils

Classes

  • Autarky\Application
  • Autarky\Config\ConfigProvider
  • Autarky\Config\FileStore
  • Autarky\Config\LoaderFactory
  • Autarky\Config\Loaders\CachingYamlFileLoader
  • Autarky\Config\Loaders\PhpFileLoader
  • Autarky\Config\Loaders\YamlFileLoader
  • Autarky\Console\Application
  • Autarky\Console\Command
  • Autarky\Console\RouteDispatchCommand
  • Autarky\Console\RouteListCommand
  • Autarky\Container\Container
  • Autarky\Container\ContainerProvider
  • Autarky\Container\Factory\AbstractArgument
  • Autarky\Container\Factory\ClassArgument
  • Autarky\Container\Factory\Definition
  • Autarky\Container\Factory\Factory
  • Autarky\Container\Factory\ScalarArgument
  • Autarky\Container\Proxy\AbstractProxy
  • Autarky\Container\Proxy\ProxyProvider
  • Autarky\Database\ConnectionManager
  • Autarky\Database\DatabaseProvider
  • Autarky\Errors\ErrorHandlerManager
  • Autarky\Errors\ErrorHandlerProvider
  • Autarky\Errors\StubErrorHandler
  • Autarky\Events\EventDispatcher
  • Autarky\Events\EventDispatcherProvider
  • Autarky\Files\LockingFilesystem
  • Autarky\Files\PathResolver
  • Autarky\Http\CookieMiddleware
  • Autarky\Http\CookieProvider
  • Autarky\Http\CookieQueue
  • Autarky\Http\SessionMiddleware
  • Autarky\Http\SessionProvider
  • Autarky\Logging\ChannelManager
  • Autarky\Logging\DefaultLogConfigurator
  • Autarky\Logging\LoggingErrorHandler
  • Autarky\Logging\LoggingProvider
  • Autarky\Provider
  • Autarky\Providers\AbstractDependantProvider
  • Autarky\Providers\AbstractProvider
  • Autarky\Routing\Configuration
  • Autarky\Routing\Controller
  • Autarky\Routing\DefaultRouteConfigurator
  • Autarky\Routing\Events\AbstractRouteEvent
  • Autarky\Routing\Events\AfterEvent
  • Autarky\Routing\Events\BeforeEvent
  • Autarky\Routing\Events\RouteMatchedEvent
  • Autarky\Routing\Route
  • Autarky\Routing\RoutePathGenerator
  • Autarky\Routing\Router
  • Autarky\Routing\RoutingProvider
  • Autarky\Routing\UrlGenerator
  • Autarky\Testing\TestCase
  • Autarky\Testing\WebTestCase
  • Autarky\TwigTemplating\Extensions\PartialExtension
  • Autarky\TwigTemplating\Extensions\SessionExtension
  • Autarky\TwigTemplating\Extensions\UrlGenerationExtension
  • Autarky\TwigTemplating\Template
  • Autarky\TwigTemplating\TemplateContext
  • Autarky\TwigTemplating\TemplateEvent
  • Autarky\TwigTemplating\TemplatingEngine
  • Autarky\TwigTemplating\TwigEnvironment
  • Autarky\TwigTemplating\TwigTemplate
  • Autarky\TwigTemplating\TwigTemplatingProvider
  • Autarky\Utils\ArrayUtil

Interfaces

  • Autarky\Config\ConfigInterface
  • Autarky\Config\LoaderInterface
  • Autarky\ConfiguratorInterface
  • Autarky\Container\CallableInvokerInterface
  • Autarky\Container\ClassResolverInterface
  • Autarky\Container\ContainerAwareInterface
  • Autarky\Container\ContainerInterface
  • Autarky\Container\Factory\ArgumentInterface
  • Autarky\Container\Factory\FactoryInterface
  • Autarky\Database\ConnectionFactoryInterface
  • Autarky\Errors\ErrorHandlerInterface
  • Autarky\Errors\ErrorHandlerManagerInterface
  • Autarky\Events\EventDispatcherAwareInterface
  • Autarky\Providers\ConsoleProviderInterface
  • Autarky\Providers\DependantProviderInterface
  • Autarky\Providers\ProviderInterface
  • Autarky\Routing\InvokerInterface
  • Autarky\Routing\RoutePathGeneratorInterface
  • Autarky\Routing\RouterInterface

Traits

  • Autarky\Container\ContainerAwareTrait
  • Autarky\Events\EventDispatcherAwareTrait
  • Autarky\Routing\ControllerTrait

Exceptions

  • Autarky\Config\LoadException
  • Autarky\Container\Exception\ContainerException
  • Autarky\Container\Exception\NotInstantiableException
  • Autarky\Container\Exception\ResolvingException
  • Autarky\Container\Exception\ResolvingInternalException
  • Autarky\Container\Exception\UnresolvableArgumentException
  • Autarky\Database\CannotConnectException
  • Autarky\Files\IOException
  • Autarky\Providers\ProviderException
  • Overview
  • Namespace
  • Class
  1: <?php
  2: /**
  3:  * This file is part of the Autarky package.
  4:  *
  5:  * (c) Andreas Lutro <anlutro@gmail.com>
  6:  *
  7:  * For the full copyright and license information, please view the LICENSE
  8:  * file that was distributed with this source code.
  9:  */
 10: 
 11: namespace Autarky\Config;
 12: 
 13: use Autarky\Config\Loaders\CachingYamlFileLoader;
 14: use Autarky\Config\Loaders\YamlFileLoader;
 15: use Autarky\Container\ContainerInterface;
 16: use Autarky\Files\PathResolver;
 17: use Autarky\Providers\AbstractProvider;
 18: 
 19: /**
 20:  * Provides config to the application.
 21:  *
 22:  * This service provider is vital to the framework.
 23:  */
 24: class ConfigProvider extends AbstractProvider
 25: {
 26:     /**
 27:      * The path in which config files are located.
 28:      *
 29:      * @var string
 30:      */
 31:     protected $configPath;
 32: 
 33:     /**
 34:      * @param string $configPath The path in which config files are located.
 35:      */
 36:     public function __construct($configPath)
 37:     {
 38:         $this->configPath = $configPath;
 39:     }
 40: 
 41:     /**
 42:      * {@inheritdoc}
 43:      */
 44:     public function register()
 45:     {
 46:         $this->app->setConfig($store = $this->getConfigStore());
 47: 
 48:         if ($store->has('app.configurators')) {
 49:             foreach ($store->get('app.configurators') as $configurator) {
 50:                 $this->app->config($configurator);
 51:             }
 52:         }
 53:     }
 54: 
 55:     protected function getConfigStore()
 56:     {
 57:         $dic = $this->app->getContainer();
 58: 
 59:         // set up the factory
 60:         $loaderFactory = new LoaderFactory($dic);
 61:         $dic->instance('Autarky\Config\Loaders\LoaderFactory', $loaderFactory);
 62: 
 63:         // set up the config store
 64:         $store = new FileStore(
 65:             new PathResolver($this->configPath),
 66:             $loaderFactory,
 67:             $this->app->getEnvironment()
 68:         );
 69:         $dic->instance('Autarky\Config\FileStore', $store);
 70:         $dic->alias('Autarky\Config\FileStore', 'Autarky\Config\ConfigInterface');
 71: 
 72:         // set up the PHP file loader
 73:         $dic->share('Autarky\Config\Loaders\PhpFileLoader');
 74:         $loaderFactory->addLoader('.php', 'Autarky\Config\Loaders\PhpFileLoader');
 75: 
 76:         // set up the YAML config file loaders
 77:         $dic->define('Autarky\Config\Loaders\YamlFileLoader', function(ContainerInterface $dic) {
 78:             return new YamlFileLoader(
 79:                 $dic->resolve('Symfony\Component\Yaml\Parser')
 80:             );
 81:         });
 82:         $dic->share('Autarky\Config\Loaders\YamlFileLoader');
 83: 
 84:         $yamlCachePath = $this->getYamlCachePath($store);
 85:         $dic->define('Autarky\Config\Loaders\CachingYamlFileLoader', function(ContainerInterface $dic) use($yamlCachePath) {
 86:             return new CachingYamlFileLoader(
 87:                 $dic->resolve('Symfony\Component\Yaml\Parser'),
 88:                 $yamlCachePath
 89:             );
 90:         });
 91:         $dic->share('Autarky\Config\Loaders\CachingYamlFileLoader');
 92: 
 93:         $loader = $yamlCachePath
 94:             ? 'Autarky\Config\Loaders\CachingYamlFileLoader'
 95:             : 'Autarky\Config\Loaders\YamlFileLoader';
 96:         $loaderFactory->addLoader(['.yml', '.yaml'], $loader);
 97: 
 98:         // done!
 99:         return $store;
100:     }
101: 
102:     protected function getYamlCachePath(ConfigInterface $config = null)
103:     {
104:         if (file_exists($this->configPath.'/path.yml')) {
105:             throw new \RuntimeException("The 'path' config file cannot be YAML when using the caching YAML config file loader.");
106:         }
107: 
108:         $config = $config ?: $this->app->getConfig();
109: 
110:         $path = $config->get('path.storage').'/yaml';
111: 
112:         if (is_dir($path) && is_writable($path)) {
113:             return $path;
114:         }
115: 
116:         return null;
117:     }
118: }
119: 
Autarky Framework API documentation generated by ApiGen