Example #1
0
 /**
  * @param array $config
  * @return \Phalcon\Di\FactoryDefault
  */
 public static function createMvcFrom(array $config) : \Phalcon\Di\FactoryDefault
 {
     $di = new \Phalcon\Di\FactoryDefault();
     $di->set('config', function () use($config) {
         return new Config($config);
     });
     $di->setShared('router', function () use($config) {
         return Router::createFrom($config['routes'] ?? []);
     });
     $di->setShared('dispatcher', function () use($config) {
         return Dispatcher::createMvcFrom($config['dispatcher']);
     });
     if (isset($config['view'])) {
         $di->setShared('view', function () use($config, $di) {
             return View::createFrom($config['view'] ?? [], $di);
         });
     }
     foreach ($config['services'] ?? [] as $service) {
         /** @var InjectableInterface $service */
         $service::injectTo($di);
     }
     return $di;
 }