1: <?php
 2: 
 3: /**
 4:  * This file is part of the Minion package.
 5:  * For the full copyright and license information, please view the LICENSE
 6:  * file that was distributed with this source code.
 7:  *
 8:  * @license MIT License
 9:  */
10: 
11: namespace Minion\Twig;
12: 
13: use Minion\Service\ServiceProvider;
14: use Silex\Application as SilexApp;
15: 
16: /**
17:  * {@internal it is NOT RECOMMENDED to use it outside Minion package}}
18:  *
19:  * Class TwigExtensionTagServiceProvider.
20:  *
21:  * Allow to extend twig environment by registering extension as a service.
22:  *
23:  * @package Minion
24:  * @author Damian SzczerbiĆski <dszczer@gmail.com>
25:  */
26: class TwigExtensionTagServiceProvider extends ServiceProvider
27: {
28:     /**
29:      * Extend Twig Environment with provided Extension.
30:      *
31:      * @param SilexApp $app
32:      *
33:      * @return void
34:      */
35:     public function register(SilexApp $app) {
36:         $app['twig'] = $app->share($app->extend('twig', function (\Twig_Environment $twig, SilexApp $app) {
37:             $class = $this->getServiceConfig()->getProviderClass();
38:             $twig->addExtension(new $class);
39: 
40:             return $twig;
41:         }));
42:     }
43: 
44:     /**
45:      * {@inheritdoc}
46:      */
47:     public function boot(SilexApp $app) {}
48: }