Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Error en return de funcion

Estas en el tema de Error en return de funcion en el foro de PHP en Foros del Web. Buenas gente. Ando liado con un proyecto y no consigo que me haga un return correcto, y ya me parece raro. El proceso es simple, ...
  #1 (permalink)  
Antiguo 29/11/2018, 02:40
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 7
Pregunta Error en return de funcion

Buenas gente.
Ando liado con un proyecto y no consigo que me haga un return correcto, y ya me parece raro.

El proceso es simple, lo pongo comentado en el php. Tiene tantas funciones porque me faltan procesos, me quede pillado con esto.

Código PHP:
class email {
//Funcion global
    
public static function gestoria(){
        return 
email::sabertodos();
    }
    
    protected static function 
sabertodos(){
//PREGUNTO SI EN EL DÍA DE HOY HAY ALGO EN BBDD he puesto esa fecha como ejemplo, pero ira un date();
        
$c = new tabla('email','status=0 AND tipo="gestoria" AND send="2018-12-20"');
        foreach(
$c->Select(true) as $e) {
            if(
$e) {
//SI ES ASI, ENVIO ID_ID Y FECHA
                
$valor email::manana($e['id_id'],$e['fecha']);
            }
        }
        
var_dump($valor); //NO LLEGA NADA
        
return $valor;
    }
    
    protected static function 
manana($id,$date,$valores=NULL) {
//PREGUNTAMOS SI ES ID Y ESA FECHA TIENEN VALORES
        
$c = new tabla('email','status=0 AND tipo="gestoria" AND id_id='.$id.' AND fecha="'.$date.'"');
        
$b $c->Select();

        if(
$b['fecha']) {
//SI ES QUE SI CONTINUAMOS
//AGREGAMOS VALOR DE ESA FECHA AL ARRAY
            
$valores[$id][] = $date;
//CALCULAMOS EL DÍA SIGUIENTE
            
$fecha strtotime('+1 day',strtotime($b['fecha']));
            
$fechan date('Y-m-d',$fecha);
//VOLVEMOS A PREGUNTAR LA MISMA FUNCION
            
email::manana($id,$fechan,$valores);
            exit();
        } else {
//SI YA NO HAY MÁS FECHA, DEVOLVEMOS (AQUI ESTA EL PROBLEMA)
            
var_dump($valores); //LO QUE IMPRIME
            
return $valores;
        }
    }
}

email::gestoria(); 
La base de datos EMAIL solo tiene esto por ahora.

Código:
id=1,status=0,send="2018-12-20",tipo="gestoria",id_id=1,fecha="2018-12-24";
id=2,status=0,send="2018-12-21",tipo="gestoria",id_id=1,fecha="2018-12-25";
id=3,status=0,send="2018-12-21",tipo="gestoria",id_id=1,fecha="2018-12-26";
id=4,status=0,send="2018-12-26",tipo="gestoria",id_id=1,fecha="2018-12-29";
El resultado que tengo en pantalla. Que esta guay, pero si lo paso por un return ya no vuelve nada.
Código HTML:
array(1) {
  [1]=>
  array(3) {
    [0]=>;
    string(10) "2018-12-24"
    [1]=>
    string(10) "2018-12-25"
    [2]=>
    string(10) "2018-12-26"
  }
}
Lo que busco es que me diga si al día siguiente tambien tiene registro, asi una tras otra hasta que diga que no. Y todas esas fechas las guarde en un array.

Agradezco toda ayuda.
__________________
Manz Soluciones On/Off
  #2 (permalink)  
Antiguo 29/11/2018, 08:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Error en return de funcion

El exit() impide que llegue el return!!!
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 29/11/2018, 12:06
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: Error en return de funcion

La cosa es, actua el exit(); aunque este dentro de un IF?

Pero tema aparte, si quito el exit(), obtengo el mismo resultado pero el return me vuelve con NULL, asique no me devuelve el array de $valores.
__________________
Manz Soluciones On/Off
  #4 (permalink)  
Antiguo 29/11/2018, 12:16
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 7
Respuesta: Error en return de funcion

Nada, ya lo solucioné al fin.

Puse la variable fuera de la funcion y escribo en ella dentro de la funcion. Y cierto, el exit() aunque esté dentro un if mata todo.

Cada dia se aprende algo nuevo.
__________________
Manz Soluciones On/Off
  #5 (permalink)  
Antiguo 29/11/2018, 18:48
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Error en return de funcion

Que bueno que encontraste la solución, hice enfasis en el exit() porque con eso llegabas mas facil al resultado que esperabas obtener.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: funcion, registro, return, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:39.