public function register(Container $app)
 {
     $app['router.options'] = [];
     $app['router.loader_resolver'] = function () {
         $fileLocator = new FileLocator();
         $loaderResolver = new LoaderResolver([new XmlFileLoader($fileLocator), new PhpFileLoader($fileLocator), new ClosureLoader()]);
         if (class_exists('Symfony\\Component\\Yaml\\Parser')) {
             $loaderResolver->addLoader(new YamlFileLoader($fileLocator));
         }
         return $loaderResolver;
     };
     $app['router'] = function (Application $app) {
         $router = new Router(new ClosureLoader(), function () use($app) {
             if (isset($app['router.resource'])) {
                 $userLoader = new DelegatingLoader($app['router.loader_resolver']);
                 $userRoutes = $userLoader->load($app['router.resource']);
                 $app['routes']->addCollection($userRoutes);
             }
             $app->flush();
             return $app['routes'];
         }, $app['router.options'] + ['debug' => isset($app['debug']) ? $app['debug'] : false, 'matcher_base_class' => 'Silex\\Provider\\Routing\\RedirectableUrlMatcher', 'matcher_class' => 'Silex\\Provider\\Routing\\RedirectableUrlMatcher'], $app['request_context'], $app['logger']);
         return $router;
     };
     $app['request_matcher'] = function (Application $app) {
         return $app['router'];
     };
     $app['url_generator'] = function (Application $app) {
         return $app['router'];
     };
 }
示例#2
0
 private static function prepareConfig()
 {
     $configDirectories = array(dirname(__FILE__) . '/../../config');
     $locator = new FileLocator($configDirectories);
     $loaderResolver = new LoaderResolver(array(new \App\ConfigLoader($locator)));
     $ymlConfig = $locator->locate(dirname(__FILE__) . '/../../config/config.yml', null, false);
     return $loaderResolver->resolve($ymlConfig)->load($ymlConfig);
 }
 /**
  * Ensures stuff from the apps/<app>/config/ dir can be loaded
  *
  * @see \Symfony\Component\HttpKernel\Kernel::getContainerLoader()
  */
 protected function getContainerLoader(ContainerInterface $container)
 {
     $locator = new FileLocator($this->getConfigDir());
     $resolver = new LoaderResolver();
     $resolver->addLoader(new YamlFileLoader($container, $locator));
     return new DelegatingLoader($resolver);
 }
示例#4
0
 /**
  * @param array $loaders
  */
 public function __construct(array $loaders = null)
 {
     if (null === $loaders) {
         $loaders = [new IniFileLoader(), new PhpFileLoader(), new XmlFileLoader(), new YamlFileLoader(), new JsonFileLoader()];
     }
     parent::__construct($loaders);
 }
 public function register(Container $pimple)
 {
     $pimple->extend('request_matcher', function ($matcher, $pimple) {
         $matcher = new ChainMatcher([$pimple['routing.router'], $matcher]);
         $matcher->setContext($pimple['request_context']);
         return $matcher;
     });
     $pimple->extend('url_generator', function ($generator, $pimple) {
         $generator = new ChainUrlGenerator([$pimple['routing.router'], $generator]);
         $generator->setContext($pimple['request_context']);
         return $generator;
     });
     $pimple->extend('resolver', function ($resolver, $pimple) {
         return new ControllerResolver($resolver, $pimple);
     });
     $pimple['routing.config'] = function ($pimple) {
         $options = isset($pimple['routing.options']) ? $pimple['routing.options'] : [];
         $debug = isset($pimple['debug']) ? $pimple['debug'] : true;
         $paths = isset($pimple['root_dir']) ? [$pimple['root_dir']] : [];
         return $options + ['resource' => null, 'debug' => $debug, 'paths' => $paths, 'matcher_class' => 'Silex\\Provider\\Routing\\RedirectableUrlMatcher', 'matcher_base_class' => 'Silex\\Provider\\Routing\\RedirectableUrlMatcher'];
     };
     $pimple['routing.router'] = function ($pimple) {
         $config = $pimple['routing.config'];
         $resource = $config['resource'];
         unset($config['paths'], $config['resource']);
         return new Router($pimple['routing.loader'], $resource, $config, $pimple['request_context'], $pimple['logger']);
     };
     $pimple['routing.loader_resolver'] = function ($pimple) {
         $locator = $pimple['routing.locator'];
         $resolver = new LoaderResolver([new PhpFileLoader($locator), new XmlFileLoader($locator), new YamlFileLoader($locator), new NullLoader(), new ClosureLoader()]);
         if (class_exists('Doctrine\\Common\\Annotations\\AnnotationReader')) {
             $loader = new AnnotationClassLoader($pimple['routing.annotation_reader']);
             $resolver->addLoader(new AnnotationFileLoader($locator, $loader));
             $resolver->addLoader(new AnnotationDirectoryLoader($locator, $loader));
         }
         return $resolver;
     };
     $pimple['routing.loader'] = function ($pimple) {
         return new DelegatingLoader($pimple['routing.loader_resolver']);
     };
     $pimple['routing.locator'] = function ($pimple) {
         return new FileLocator($pimple['routing.config']['paths']);
     };
     $pimple['routing.annotation_reader'] = function ($pimple) {
         return new AnnotationReader();
     };
 }
示例#6
0
 /**
  * @override
  */
 public function addLoader(LoaderInterface $loader)
 {
     if ($this->collector && $loader instanceof ResourceAwareInterface) {
         $loader->setResourceCollector($this->collector);
     }
     if ($this->wise && $loader instanceof WiseAwareInterface) {
         $loader->setWise($this->wise);
     }
     parent::addLoader($loader);
 }
示例#7
0
 /**
  * @return Loader
  */
 private function getDefaultLoaders()
 {
     $this->resolver->addLoader(new YamlFileLoader($this->locator, $this->resources));
     $this->resolver->addLoader(new PhpFileLoader($this->locator, $this->resources));
     $loader = new DelegatingLoader($this->resolver);
     if (null !== $this->cacheDir) {
         $loader = new CacheLoader($loader, $this->resources);
         $loader->setCacheDir($this->cacheDir);
     }
     return $loader;
 }
 public function testLoaders()
 {
     $resolver = new LoaderResolver();
     $resolver->addLoader($loader = $this->getMock('Symfony\\Component\\Config\\Loader\\LoaderInterface'));
     $this->assertEquals(array($loader), $resolver->getLoaders(), 'addLoader() adds a loader');
 }
示例#9
0
<?php

require __DIR__ . '/../../vendor/autoload.php';
use Breadcrumbs\BreadcrumbFactory;
use Breadcrumbs\TrailCollection;
use Breadcrumbs\Provider;
use Breadcrumbs\Loader\PhpFileLoader;
use Breadcrumbs\Loader\YamlFileLoader;
use Breadcrumbs\Renderer\ListRenderer;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\Config\Loader\LoaderResolver;
$resolver = new LoaderResolver();
$resolver->addLoader(new YamlFileLoader(new FileLocator(array(__DIR__ . '/../Fixtures'))));
$resolver->addLoader(new PhpFileLoader(new FileLocator(array(__DIR__ . '/../Fixtures'))));
$loader = $resolver->resolve('many_type.yml');
$collection = $loader->load('many_type.yml');
$renderer = new ListRenderer(' > ');
echo $renderer->render($collection->get('homepage')) . PHP_EOL;
echo $renderer->render($collection->get('test')) . PHP_EOL;
echo $renderer->render($collection->get('bar')) . PHP_EOL;