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']; }; }
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(); }; }
/** * @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); }
/** * @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'); }
/** * 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); }
<?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;