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\TwigTemplating;
 12: 
 13: use Autarky\Container\ContainerInterface;
 14: use Autarky\Provider;
 15: use Twig_Loader_Filesystem;
 16: 
 17: /**
 18:  * Provides the Twig templating engine.
 19:  */
 20: class TwigTemplatingProvider extends Provider
 21: {
 22:     /**
 23:      * {@inheritdoc}
 24:      */
 25:     public function register()
 26:     {
 27:         $dic = $this->app->getContainer();
 28: 
 29:         $dic->share('Autarky\TwigTemplating\TemplatingEngine');
 30: 
 31:         $dic->define('Twig_LoaderInterface', [$this, 'makeTwigLoader']);
 32: 
 33:         $dic->define('Autarky\TwigTemplating\TwigEnvironment', [$this, 'makeTwigEnvironment']);
 34:         $dic->share('Autarky\TwigTemplating\TwigEnvironment');
 35:         $dic->alias('Autarky\TwigTemplating\TwigEnvironment', 'Twig_Environment');
 36:     }
 37: 
 38:     /**
 39:      * Make the twig template loader.
 40:      *
 41:      * @return \Autarky\TwigTemplating\TwigFileLoader
 42:      */
 43:     public function makeTwigLoader()
 44:     {
 45:         return new Twig_Loader_Filesystem(
 46:             $this->app->getConfig()->get('path.templates')
 47:         );
 48:     }
 49: 
 50:     /**
 51:      * Make the twig environment.
 52:      *
 53:      * @return \Autarky\TwigTemplating\TwigEnvironment
 54:      */
 55:     public function makeTwigEnvironment(ContainerInterface $dic)
 56:     {
 57:         $config = $this->app->getConfig();
 58:         $options = ['debug' => $config->get('app.debug')];
 59: 
 60:         if ($config->has('path.templates_cache')) {
 61:             $options['cache'] = $config->get('path.templates_cache');
 62:         } else if ($config->has('path.storage')) {
 63:             $options['cache'] = $config->get('path.storage').'/twig';
 64:         }
 65: 
 66:         $env = new TwigEnvironment($dic->resolve('Twig_LoaderInterface'), $options);
 67: 
 68:         // merge core framework extensions with user extensions
 69:         $extensions = array_merge([
 70:             'Autarky\TwigTemplating\Extensions\PartialExtension',
 71:             'Autarky\TwigTemplating\Extensions\UrlGenerationExtension' =>
 72:                 ['Autarky\Routing\UrlGenerator'],
 73:             'Autarky\TwigTemplating\Extensions\SessionExtension' =>
 74:                 ['Symfony\Component\HttpFoundation\Session\Session'],
 75:         ], $this->app->getConfig()->get('twig.extensions', []));
 76: 
 77:         // iterate through the array of extensions. if the array key is an
 78:         // integer, there are no dependencies defined for that extension and we
 79:         // can simply add it. if the array key is a string, the key is the class
 80:         // name of the extension and the value is an array of class dependencies
 81:         // that must be bound to the service container in order for the
 82:         // extension to be loaded.
 83:         foreach ($extensions as $extension => $dependencies) {
 84:             if (is_int($extension)) {
 85:                 $env->addExtension($dic->resolve($dependencies));
 86:             } else {
 87:                 foreach ((array) $dependencies as $dependency) {
 88:                     if (!$dic->isBound($dependency)) {
 89:                         // break out of this inner foreach loop and continue to
 90:                         // the next iteration of the outer foreach loop,
 91:                         // effectively preventing the extension from loading
 92:                         continue 2;
 93:                     }
 94:                 }
 95: 
 96:                 // if any of the dependencies are not met in the above loop,
 97:                 // this line of code will not be executed
 98:                 $env->addExtension($dic->resolve($extension));
 99:             }
100:         }
101: 
102:         return $env;
103:     }
104: }
105: 
Autarky Framework API documentation generated by ApiGen