private function processUrlConfigs(array $configs, ContainerBuilder $container) { foreach ($configs as $config) { $data = Decoder::decode($config['url']); $service = $this->resolver->createServiceDefinitions($data, $container, $config['prefix']); if (!is_string($service) || !$container->hasDefinition($service)) { throw new UrlResolveException("No service name returned or a non-existant service was returned"); } $data['service'] = $service; foreach ($config['encoders'] as $encoder) { if (!$this->encoderRegistry->hasEncoder($encoder)) { throw new EncodeException("No encoder with the name '{$encoder}' found"); } $this->encoderRegistry->getEncoder($encoder)->encode($data, $container, $config['prefix']); } } }
public function testFullWithWeirdPath() { $res = Decoder::matchUrl('ftp://user@example:p/w@example.com:21/some/path/to/some?example=true@example.com'); $this->assertSame(['scheme' => 'ftp', 'user' => 'user@example', 'pass' => 'p/w', 'host' => 'example.com', 'port' => 21, 'path' => '/some/path/to/some', 'query' => 'example=true@example.com', 'fragment' => null], $res); }