コード例 #1
0
ファイル: rest.php プロジェクト: emma5021/toba
 public function __construct($settings = array())
 {
     self::$instancia = $this;
     //		$this->autoload();
     $this->container = new Set();
     $this->container['settings'] = array_merge(static::get_default_settings(), $settings);
     // Request default
     $this->container->singleton('request', function ($c) {
         $req = new request();
         $req->set_encoding_datos($c['settings']['encoding']);
         return $req;
     });
     // Respuesta default
     $this->container->singleton('response', function ($c) {
         $respuesta = new respuesta_rest();
         $respuesta->set_encoding_datos($c['settings']['encoding']);
         $respuesta->set_api_version($c['settings']['api_version']);
         return $respuesta;
     });
     // Ruteador default
     $this->container->singleton('router', function ($c) {
         $r = new ruteador($c->lector_recursos, new rest_instanciador());
         return $r;
     });
     // Proveedor de autenticacion --> SE DEBE INDICAR UNO EXTERNAMEN
     $this->container->singleton('autenticador', function ($c) {
         throw new rest_error_interno("Se debe indicar un autenticador que provea los usuarios del negocio");
     });
     // Proveedor de autorizacion
     $this->container->singleton('autorizador', function ($c) {
         $autorizador = new autorizacion_anonima();
         return $autorizador;
     });
     // Firewall default
     $this->container->singleton('firewall', function ($c) {
         $autorizador = new firewall($c->autenticador, $c->autorizador, $c->settings['url_protegida']);
         return $autorizador;
     });
     // Logger
     $this->container->singleton('logger', function ($c) {
         return new logger_vacio();
     });
     $this->container->singleton('lector_recursos', function ($c) {
         return new lector_recursos_archivo($c['settings']['path_controladores'], $c['settings']['prefijo_controladores']);
     });
     $this->container->singleton('controlador_documentacion', function ($c) {
         return new controlador_docs($c['settings']['path_controladores'], $c['settings']['url_api']);
     });
     // Vistas default
     $this->container->singleton('vista', function ($c) {
         $formato = $c['settings']['formato_respuesta'];
         $respuesta = $c['response'];
         switch ($formato) {
             case 'json':
                 return new vista_json($respuesta);
             case 'xml':
                 return new vista_xml($respuesta);
         }
     });
 }