Foros del Web » Programando para Internet » PHP » CodeIgniter »

Pasar variables entre funciones

Estas en el tema de Pasar variables entre funciones en el foro de CodeIgniter en Foros del Web. Buenas, Estoy empezando con este Framework. Se que es algo muy básico, he encontrado algo pero poco al respecto, además lo he porbado y no ...
  #1 (permalink)  
Antiguo 02/08/2016, 00:31
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Pasar variables entre funciones

Buenas,
Estoy empezando con este Framework. Se que es algo muy básico, he encontrado algo pero poco al respecto, además lo he porbado y no consigo que funcione.

Mi duda es sencilla: Quiero pasar una variable entre distintas funciones (o métodos) de un controlador.
Me podrían orientar sobre la mejor forma de hacerlo.
1.- Declarar variable glogal. Lo he intentado con $GLOBALS pero no consigo que funcione.
2.- Guardar el valor que quiero pasar entre funciones en una variable de otro modelo. (por ej el de session u otro)
3.- Otra alternativa.

Gracias.
Un saludo.
  #2 (permalink)  
Antiguo 04/08/2016, 14:27
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

Cuando quieres utilizar funciones en un mismo controlador puedes hacerlo

La función la declaras así.

Public function asdf($param){
//metodo
}
El public puede variar si lo utilizaras solo en este controlador de ser así coloca protected

y la llamas desde el mismo controlado así:

$this->asdf($param);
  #3 (permalink)  
Antiguo 05/08/2016, 12:15
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

Muchas gracias!
Supongo que dentro del método tendré que añadir código. Porque lo he probado como indico y no consigo que funcione.

Public function asdf($param){
//metodo
$param = '3';
}

Y dentro del método que realizo la llamada:
$data['cliente_id'] = $this->asdf($param);

Un saludo.
  #4 (permalink)  
Antiguo 08/08/2016, 06:42
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

Si eso lo puedes realizar y si... claro dentro de la función va el codigo que necesitas xD
  #5 (permalink)  
Antiguo 08/08/2016, 11:08
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

Gracias.
Sigo sin conseguirlo. Solamente necesito salvar un valor en una funcion a(), y luego recuperarlo en una funcion b().
Tal como lo tengo planteado no funciona porque la funcion "Public function asdf($param)" requiere de una variable, que al introducirla me pisa la anterior.

Public function asdf($param){
$data = '$param';
return $param;
}

funcion a(){
...
$data['client_id'] = $this->asdf('$var_salvar');
...
}

funcion b(){
...
$data['client_id'] = $this->asdf('$var_recuperar');
...
}
  #6 (permalink)  
Antiguo 09/08/2016, 06:41
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

Cita:
Iniciado por inthalas Ver Mensaje
Gracias.
Sigo sin conseguirlo. Solamente necesito salvar un valor en una funcion a(), y luego recuperarlo en una funcion b().
Tal como lo tengo planteado no funciona porque la funcion "Public function asdf($param)" requiere de una variable, que al introducirla me pisa la anterior.

Public function asdf($param){
$data = '$param';
return $param;
}

funcion a(){
...
$data['client_id'] = $this->asdf('$var_salvar');
...
}

funcion b(){
...
$data['client_id'] = $this->asdf('$var_recuperar');
...
}
Oye
mira fijate en esta linea.
$data = '$param'; //acá estas asignando a la variable data un string que dice $param por que lo tienes entre comillas.

Después estas retornando el mismo $param que recibe la función.


Luego en
$data['client_id'] = $this->asdf('$var_salvar'); nuevamente estas pasando un string, por que lo pusiste en comillas debe ir solamente asi $var_salvar, lo mismo $var_recuperar
  #7 (permalink)  
Antiguo 09/08/2016, 10:46
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

Cita:
Iniciado por inthalas Ver Mensaje
Gracias.
Sigo sin conseguirlo. Solamente necesito salvar un valor en una funcion a(), y luego recuperarlo en una funcion b().
Tal como lo tengo planteado no funciona porque la funcion "Public function asdf($param)" requiere de una variable, que al introducirla me pisa la anterior.

Public function asdf($param){
$data = '$param';
return $param;
}

funcion a(){
...
$data['client_id'] = $this->asdf('$var_salvar');
...
}

funcion b(){
...
$data['client_id'] = $this->asdf('$var_recuperar');
...
}
Oye
mira fijate en esta linea.
$data = '$param'; //acá estas asignando a la variable data un string que dice $param por que lo tienes entre comillas.

Despues estas retornando el mismo $param que recibe la función.


Luego en
$data['client_id'] = $this->asdf('$var_salvar'); nuevamante estas pasando un string, por que lo pusiste en comillas debe ir solamente asi $var_salvar, lo mismo $var_recuperar
  #8 (permalink)  
Antiguo 10/08/2016, 00:20
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

Gracias,
Llevas razón, perdona me equivoqué al escribir.
Pero cuando intento recuperar el valor guardado previamente, al pasar un parámetro a la función asdf estoy sobrescribiendo el valor anterior, y si no le paso parámetro no funcionaría:
funcion b(){
...
$data['client_id'] = $this->asdf($var_recuperar);
...
}

¿Habría alguna forma de pasar una variable de la funciona a la funcionb?
Gracias de nuevo.
  #9 (permalink)  
Antiguo 11/08/2016, 10:07
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

Si... la variable la pasas y la puedes trabajar, creo que el problema es la que tu cuando utilizas una función retornas algo... lo que tu recibes lo trabajas, lo procesas y retornas una variable que lleva un valor, no tienes por que asignar a una variable asi como lo haces... ahora si gustas coloca tus métodos y funciones y explicas que quieres hacer y llegamos a una solución.
  #10 (permalink)  
Antiguo 11/08/2016, 10:16
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

Gracias, dentro del controlador "clientes.php" tengo una función add() en la cual tengo una variable llamada $key, que quiero pasar a otra función add_cliente().


function add(){
...
$data
}

function add_client(){
...
}
  #11 (permalink)  
Antiguo 11/08/2016, 10:30
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

public function add(){



$absd= $this->add_client($key); // la variable absd tomara el valor que retorna la función add_client
}


protected function add_client($key){

//se procesa key y se retorna


return $key;

}
  #12 (permalink)  
Antiguo 11/08/2016, 10:37
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

De la forma que comentas me veo obligado a llamar a la función add_client() dentro de la función add(), cosa que no procede.
¿Habría otra alternativa? Gracias,
  #13 (permalink)  
Antiguo 11/08/2016, 11:57
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

pero de verdad no entiendo que es lo que deseas hacer... xD
quieres tener dos funciones por separadas? como las quieres llamar?
Explícame por favor.
  #14 (permalink)  
Antiguo 11/08/2016, 14:49
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

Perdona si no me he explicado bien, llevo poco tiempo con esto.
Simplemente tengo varias funciones dentro del controlador que llamo desde la vista, entre ellas:
function add_client()
function add()

Dentro de la primera función tengo una variable que me gustaría pasarle directamente a la segunda función. No me vale ponerle un return porque la utilizo en otros sitios, tampoco me vale el ejemplo que ponias.
Simplemente me gustaría el poder definir una variable de tipo global para que pueda ser accesible desde fuera de la función primera y pueda utilizarlo en la segunda función. Tampoco sé si es posible o si hay alguna forma más recomendable, por ejemplo utilizando las variables de sesión.

Gracias por tu tiempo.
  #15 (permalink)  
Antiguo 12/08/2016, 10:30
Avatar de bymorr  
Fecha de Ingreso: septiembre-2012
Mensajes: 118
Antigüedad: 12 años, 3 meses
Puntos: 9
Respuesta: Pasar variables entre funciones

Si quieres utilizar una variable global, tienes que definirla en el constructor.

public function __construct() {
parent::__construct();
$this->asdf= FALSE; //-> variable global
}


y para asignarle un valor

public function add_client(){
$this->asdf = 1; //-> se le asigna un valor a la variable global.

}

utilizar la variable global en otra funcion.

public function add() {
$data['qwerty']= $this->asdf; //-> referencia a la variable global
// ahora vez si la pasas o que realizas con esa variable
}


saludos.
  #16 (permalink)  
Antiguo 12/08/2016, 11:15
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años, 7 meses
Puntos: 1
Respuesta: Pasar variables entre funciones

Nada, sigue sin funcionarme. Lo he puesto exactamente tal como indicas y no se pasa el valor que se guarda previamente en
$this->asdf = 1; //-> se le asigna un valor a la variable global.
.
He probado a definir el valor en la misma fucnión y si lo muestra, por lo que no es un error de sintaxis.

Puede deberse a que esas funciones (la función add_client() y la función add() ) se llaman desde la vista, pero para cada una de ellas se utiliza en un formulario distinto con un submit.
Los dos submit se ejecutan uno detras de otro pero de forma independiente.

Gracias de nuevo.

Etiquetas: funciones, variables
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 15:43.