Foros del Web » Programando para Internet » PHP »

Buenas practicas para usar parametros

Estas en el tema de Buenas practicas para usar parametros en el foro de PHP en Foros del Web. Hola. Por curiosidad me puse a investigar sobre 'overloading' funciones en PHP y así dependiendo de la cantidad de parameros que le enviamos a una ...
  #1 (permalink)  
Antiguo 11/06/2014, 06:33
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Buenas practicas para usar parametros

Hola.

Por curiosidad me puse a investigar sobre 'overloading' funciones en PHP y así dependiendo de la cantidad de parameros que le enviamos a una funcion, esta hara algo distinto. Por ejemplo, descubri que dentro de una funcion puedo llamar a func_num_args() que me devuelve la cantidad de parametros que fueron enviados y func_get_args() me devuelve un array con los datos de estos. Por la tanto puedo hacer:

Código PHP:
function prueba (){
    if(
func_num_args() > 0){
        
$parametros func_get_args();
        if(
$parametros[0] == 'algo'){
            
hago algo;
        } else if(
$parametros[1]){
            
hago otra cosa;
        }
    }
}

prueba(1,2); 
En lugar de:
Código PHP:
function prueba ($var1$va2){
    if(
$var1 == 'algo'){
        
hago algo;
    } else if(
$var2[1]){
        
hago otra cosa;
    }

Incluso puedo recorrer los parametros con un simple foreach:

Código PHP:
foreach(func_get_args() as $parametro){

Ambos funciona perfectamente, y asi podria tener una funcion que haga varias cosas dependiendo de los paramatros que envie.

Pero mi pregunta es ¿Que tan recomendable es usar este metodo? ¿Hay algun riesgo de seguridad o memoria?

He buscado información sobre esto, pero es netamente documentación, me gustaria saber la opinion de programadores.

De antemano muchas gracias.
  #2 (permalink)  
Antiguo 11/06/2014, 07:06
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Buenas practicas para usar parametros

Diria que todos los lenguajes modernos tienen algo como func_num_args() y func_get_args(), ... esta en C y C++, en Java, en Python.....

La forma con func_num_args() y func_get_args() no la vas a usar todo el tiempo no porque consuma mas recursos sino porque sencillamente es matar moscas con un cañon.

Si no puedes saber a priori cuantos parametros tienes que procesar pues te toca


Para los programas de consola es fundamental poder detectar el numero de parametros si quieres hacer algo util, en ese caso se procesa el array $argv y te fijas si esta o no vacio -- lo que equivaldria a usar func_num_args() -- y luego lo recorres para extraer los parametros. En este caso implicitamente habria una funcion main() que es tu programa principal tal y como es en C / C++ y Java
__________________
Salu2!

Última edición por Italico76; 11/06/2014 a las 07:12
  #3 (permalink)  
Antiguo 11/06/2014, 07:14
Myl
 
Fecha de Ingreso: agosto-2011
Mensajes: 61
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Buenas practicas para usar parametros

Gracias por tu respuesta.

Tambien he programado en otros lenguajes como Batch o Java donde se puede sobre escribor un metodo directamente. Pero tenia esta duda, pues mientras investigaba, leia comentarios decir que este metodo era malo y ridiculo, mientras otros lo encontraban muy util.

Reitero mi gratitud.
  #4 (permalink)  
Antiguo 11/06/2014, 07:15
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 11 meses
Puntos: 28
Respuesta: Buenas practicas para usar parametros

según entiendo mi opinion y experiencia, hacer todo lo que se pueda con if, while, for, switch. por que son los interruptores lógicos mas básicos y rapido en todos los lenguajes si conoces los parametros y teniendo en cuenta de que consumen menos recursos y a saber si vas a usar recursos de servidor o el cliente.

en el momento de que si y solo si necesites usar una funcion especial y reservada del sistema que consuma mas recursos ... tocara usarla pero mientras no es lo recomendado...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 11/06/2014, 07:34
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Buenas practicas para usar parametros

@arcanisgk122 : no consume mas recursos, es simplemente incomodo cuando no lo necesitas
__________________
Salu2!
  #6 (permalink)  
Antiguo 11/06/2014, 09:11
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Buenas practicas para usar parametros

Primero que nada con respecto a la sobrecarga de funciones el manual dice lo siguiente:
Cita:
PHP does not support function overloading, nor is it possible to undefine or redefine previously-declared functions.
Pero para hacer algo similar puedes emplear el uso de las funciones como en tu ejemplo o argumentos por default: http://www.php.net/manual/en/functions.arguments.php y a partir de PHP 5.6 vamos a tener el uso de variadic functions con lo cual vas a poder declarar una función que reciba argumentos adicionales como un arreglo:
Código PHP:
Ver original
  1. function total_intervals($unit, DateInterval ...$intervals) {
  2.     $time = 0;
  3.     foreach ($intervals as $interval) {
  4.         $time += $interval->$unit;
  5.     }
  6.     return $time;
  7. }
  8.  
  9. $a = new DateInterval('P1D');
  10. $b = new DateInterval('P2D');
  11. echo total_intervals('d', $a, $b).' days';
  12.  
  13. // This will fail, since null isn't a DateInterval object.
  14. echo total_intervals('d', null);

La forma que escojas va depender de tus necesidades.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 11/06/2014, 09:31
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Buenas practicas para usar parametros

Python tiene algo aun mejor que esas variadic functions aun en papeles llamados parametros *args and **kwargs
__________________
Salu2!
  #8 (permalink)  
Antiguo 11/06/2014, 10:13
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Buenas practicas para usar parametros

Italico76 variadic function es el termino que se le da a una función que no tiene parámetros definidos.
Lo que pusiste es la forma en que python lo implementa.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 11/06/2014, 10:17
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Buenas practicas para usar parametros

Lo se... quise decir "la implementacion" es mucho mejor

Y de hecho no es que "no tiene parámetros definidos" sino que tiene algunos (no necesariamente todos) "indefinidos" xD
__________________
Salu2!

Etiquetas: parametros, usar
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 02:18.