Foros del Web » Programando para Internet » PHP »

Mejor forma pasar parametros a función

Estas en el tema de Mejor forma pasar parametros a función en el foro de PHP en Foros del Web. Tengo un archivo llamado validacion.php donde valido todos los formularios de entrada de datos del usuario. Allí valido todo tipo de datos: enteros, texto, fecha, ...
  #1 (permalink)  
Antiguo 11/03/2010, 09:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Mejor forma pasar parametros a función

Tengo un archivo llamado validacion.php donde valido todos los formularios de entrada de datos del usuario. Allí valido todo tipo de datos: enteros, texto, fecha, email, password, etc. Pero ahora quiero validar tambien los campos select. Es decir, que el valor recibido para un determinado select pertenezca a los posibles valores del mismo select, evitando el ataque des de n formulario externo.

La pregunta es si es práctico utilizar variables globales para los selects. Es decir, crear tantos arrays como selects haya y luego en la función en la que lo tengamos que utilizar, accedemos a el a través de la variable global?

Código PHP:
Ver original
  1. // validacion.php
  2.  
  3. // Variable Global
  4. $select = array('a','b','c');
  5.  
  6. function validaForm1($_POST){
  7.  
  8.   validaSelect($_POST['valor_select'], $select);
  9. }
  10. function validaForm2($_POST){
  11.  
  12.   validaSelect($_POST['valor_select'], $select);
  13. }
  14. function validaForm3($_POST){
  15.  
  16.   validaSelect($_POST['valor_select'], $select);
  17. }
  18.  
  19. validaSelect($valor_select, $select){
  20.   return in_array($valor_select, $select);
  21. }

O seria mejor, crear el array sólo en las funciones que lo necesitemos y no como variable global???

Espero me ayuden porque estoy un poco confundido. Grácias
  #2 (permalink)  
Antiguo 11/03/2010, 09:35
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Mejor forma pasar parametros a función

$_POST no hace falta que la pases porque es una Superglobal, así que esta disponible en todos los ámbitos del script

para hacer referencia a una variable que está fuera de la función, debes llamarla con global dentro de la misma:

Código PHP:
$variable="hola";
function 
funct(){
       global 
$variable;

si la variable $select lo vas a usar en muchas funciones, el uso de global es importante, porque si pasas el array como parámetro, éste será tratado por valor y se copiara un array nuevo para ser pasado a la función, consumiendo más recursos, esto no aplica para los objetos que se pasan por referencia

Última edición por maycolalvarez; 11/03/2010 a las 09:43
  #3 (permalink)  
Antiguo 11/03/2010, 10:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mejor forma pasar parametros a función

Muchas Grácias.

Pero un apunte, puesto que faltaba código ya que esta dentro de una clase:

Código PHP:
Ver original
  1. class validate {
  2.    
  3.   var $arr_select1; // Desplegable 1
  4.   var $arr_select2; // Desplegable 2
  5.      
  6.   // Code
  7.   function validar(){
  8.  
  9.      $this->validarSelect($_POST['value], $this->arr_select1);
  10.  }
  11.  
  12. }

Así no hace falta declarar la variable como global...

Un fallo que cometo es que paso a las funciones la variable superglobal $_POST y las recogo de la siguiente forma...

Código PHP:
Ver original
  1. function f1($post){
  2.  
  3.    // Trabajo con el $post y no con $_POST
  4.  }

Con lo que estoy haciendo una copia no? Tendré que modificarlo
  #4 (permalink)  
Antiguo 11/03/2010, 10:32
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Mejor forma pasar parametros a función

Cita:
Iniciado por cocodj69 Ver Mensaje
Muchas Grácias.

Pero un apunte, puesto que faltaba código ya que esta dentro de una clase:

Código PHP:
Ver original
  1. class validate {
  2.    
  3.   var $arr_select1; // Desplegable 1
  4.   var $arr_select2; // Desplegable 2
  5.      
  6.   // Code
  7.   function validar(){
  8.  
  9.      $this->validarSelect($_POST['value], $this->arr_select1);
  10.  }
  11.  
  12. }
Creo q quieres correr antes de gatear. Q vamos hombre, que tienes dudas en funciones y ya te estás utilizando clases.
¿Q PHP usas: PHP4?
Si quieres empezar más o menos serio en PHP POO, debería usar PHP5

Cita:
Iniciado por cocodj69 Ver Mensaje
Así no hace falta declarar la variable como global...

Un fallo que cometo es que paso a las funciones la variable superglobal $_POST y las recogo de la siguiente forma...

Código PHP:
Ver original
  1. function f1($post){
  2.  
  3.    // Trabajo con el $post y no con $_POST
  4.  }

Con lo que estoy haciendo una copia no? Tendré que modificarlo
¿Cuando dices que las recoges es el cómo la estás pasando a la función? Si pasas de esta forma lo estás pasando por valor, así q lo q hace exactamente es una copia de la variable. ¿En que te afecta eso?
  #5 (permalink)  
Antiguo 11/03/2010, 10:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mejor forma pasar parametros a función

Cita:
Iniciado por eulloa Ver Mensaje
Creo q quieres correr antes de gatear. Q vamos hombre, que tienes dudas en funciones y ya te estás utilizando clases.
¿Q PHP usas: PHP4?
Si quieres empezar más o menos serio en PHP POO, debería usar PHP5
Utilizo PHP 5. Ya llevo tiempo programando en POO y está claro que estoy haciendo copias con los valores pasados a la función!! Lo modificaré.

Cita:
Iniciado por eulloa Ver Mensaje
¿Cuando dices que las recoges es el cómo la estás pasando a la función? Si pasas de esta forma lo estás pasando por valor, así q lo q hace exactamente es una copia de la variable. ¿En que te afecta eso?
Si, la recogo quiero decir pasar a la función. Evidentemente si hago una copia innecesaria ocupa más recuros y tiempo...

Grácias por la ayuda! Múy útil!!
  #6 (permalink)  
Antiguo 11/03/2010, 10:58
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Mejor forma pasar parametros a función

Cita:
Iniciado por cocodj69 Ver Mensaje
Si, la recogo quiero decir pasar a la función. Evidentemente si hago una copia innecesaria ocupa más recuros y tiempo...
Grácias por la ayuda! Múy útil!!
Es cierto, pero esto solo se ve en el caso de grandes proyectos, donde habría q entrar a considerar cada cosa. Si tu proyecto no es muy grande pues no veo la causa de preocuparte tanto por esto....... Todo depende de tus necesidades
  #7 (permalink)  
Antiguo 11/03/2010, 11:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Mejor forma pasar parametros a función

Yaps! Aunque pienso que es mejor acostumbrarse a codificar de la forma más correcta y nítida que se pueda por pequeño que sea el proyecto!! :)

Muchas Grácias por la ayuda!!
  #8 (permalink)  
Antiguo 11/03/2010, 11:11
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Mejor forma pasar parametros a función

si esta en una clase, simplemente la variable tiene acceso local en todo el ámbito de la clase:

$this->mivariable

para hacerla visible desde afuera solo basta colocar el modificador public:

public $mivariable; //dentro de class

y así: $instanciaclase->mivariable accederias desde otras clases u ámbitos del script

Etiquetas: parametros, pasar, mejoras, formulario
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 04:28.