public function testConfig()
 {
     $arr = ['a' => ['b' => ['c' => ['d' => 'e']]], 'f' => 'h'];
     $config = new \Phalcon\Config($arr);
     $this->assertInstanceOf(\Phalcon\Config::class, Stingray::get($config, 'a'));
     $this->assertEquals($arr['a'], Stingray::get($config, 'a')->toArray());
     $this->assertInstanceOf(\Phalcon\Config::class, Stingray::get($config, 'a.b'));
     $this->assertEquals($arr['a']['b'], Stingray::get($config, 'a.b')->toArray());
     $this->assertInstanceOf(\Phalcon\Config::class, Stingray::get($config, 'a.b.c'));
     $this->assertEquals($arr['a']['b']['c'], Stingray::get($config, 'a.b.c')->toArray());
     $this->assertEquals($arr['a']['b']['c']['d'], Stingray::get($config, 'a.b.c.d'));
     $this->assertEquals($arr['f'], Stingray::get($config, 'f'));
     $this->assertNull(Stingray::get($config, 'a.b.d'));
     $this->assertNull(Stingray::get($config, 'a.b.c.d.e.f.g'));
     $this->assertEquals($arr, $config->toArray());
 }
 /**
  * replace ServiceConstants::TYPE_CONFIG_PARAMETER stubs to its values
  * @param Config $config
  * @throws \Anthill\Phalcon\KernelModule\DependencyInjection\Exceptions\ConfigParseException
  */
 private function replaceConfigParameter(Config $config)
 {
     foreach ($config as $item) {
         if ($item instanceof Config) {
             if (!$item->offsetExists('type')) {
                 $this->replaceConfigParameter($item);
                 continue;
             }
             if ($item->get('type') !== ServiceConstants::TYPE_CONFIG_PARAMETER) {
                 $this->replaceConfigParameter($item);
                 continue;
             }
             $value = $item->get('value');
             $newValue = Stingray::get($this->getConfig(), $value);
             if ($newValue === null) {
                 throw new ConfigParseException(sprintf('You must specify parameter "%s" in config', str_replace('.', ' => ', $value)));
             }
             $item->offsetSet('type', ServiceConstants::TYPE_PARAMETER);
             $item->offsetSet('value', $newValue);
         }
     }
 }
 public function registerRoutes()
 {
     /* @var $resolver RouterResolver */
     $resolver = $this->getDI()->get('route_resolver');
     $routesConfig = Stingray::get($this->getConfig()->toArray(), 'framework.routes');
     $resolver->resolve($routesConfig);
 }