function __wakeup()
 {
     foreach ($this->_propiedades_toba as $tipo => $props) {
         foreach ($props as $prop) {
             if ($tipo == 'componente') {
                 $valor = $this->{$prop};
                 $id = array('componente' => $valor[1], 'proyecto' => $valor[0]);
                 $this->{$prop} = toba_constructor::buscar_runtime($id);
             }
         }
     }
 }
 function __wakeup()
 {
     $id = array('componente' => $this->id_ci[1], 'proyecto' => $this->id_ci[0]);
     $this->ci = toba_constructor::buscar_runtime($id);
 }
示例#3
0
 /**
  * Se configuran los componentes y se atiende el servicio en forma recursiva
  */
 protected function procesar_servicios()
 {
     toba::logger()->seccion("Configurando dependencias para responder al servicio...", 'toba');
     //Se fuerza a que los Cis carguen sus dependencias (por si alguna no se cargo para atender ls eventos) y se configuren
     foreach ($this->cis as $ci) {
         $this->objetos[$ci]->pre_configurar();
         //--- Lugar para poner algun callback a nivel operacion?
         $this->objetos[$ci]->post_configurar();
     }
     //--- Si existe la zona se brinda la posibilidad de configurarla
     if ($this->hay_zona() && toba::zona()->cargada()) {
         toba::zona()->conf();
     }
     //--- Se determina el destino del servicio
     $objetos_destino = toba::memoria()->get_id_objetos_destino();
     if (!isset($objetos_destino)) {
         //En caso que el servicio no especifique destino, se asume que son todos los cis asociados al item
         $destino = array();
         foreach ($this->cis as $ci) {
             $destino[] = $this->objetos[$ci];
         }
     } else {
         //Se especifico un destino, se buscan los objetos referenciados
         $destino = array();
         foreach ($objetos_destino as $obj) {
             $destino[] = toba_constructor::buscar_runtime(array('proyecto' => $obj[0], 'componente' => $obj[1]));
         }
     }
     $servicio = toba::memoria()->get_servicio_solicitado();
     $callback = "servicio__{$servicio}";
     toba::logger()->seccion("Respondiendo al {$callback}...", 'toba');
     if (method_exists($this, $callback)) {
         $this->{$callback}($destino);
     } elseif (count($destino) == 1 && method_exists(current($destino), $callback)) {
         //-- Se pide un servicio desconocido para la solicitud, pero conocido para el objeto destino
         $obj = current($destino);
         $obj->{$callback}();
     } else {
         throw new toba_error_seguridad("El servicio {$servicio} no está soportado");
     }
 }