2009-08-30 11 views
7

Estoy sorprendido por el código, donde los valores GET, como $_GET['username'], no están incluidos como parámetros para las funciones.

¿Cuándo debe incluir los métodos POST y GET como parámetros para las funciones?

+2

¿Cuál es su verdadera pregunta? La única oración (aunque defectuosa) con un signo de interrogación al final no tiene ningún sentido. $ _GET y $ _POST son globales, se pueden usar en cualquier lugar. ¿Es una buena práctica de codificación, tal vez, tal vez no? –

Respuesta

24

¿Cuándo es necesario incluir la POST y GET métodos como parámetros para funciones?

diría "nunca": $_GET y $_POST son lo que se llama superglobals: que existe en todo el guión; lo que significa que existen dentro de funciones/métodos.

Especialmente, no necesita la palabra clave global para eso.


Aún así, confiar en aquellos en sus funciones/métodos es una mala práctica: sus funciones/métodos generalmente no deberían depender de nada que no haya pasado como parámetro.

Lo que quiero decir es; consideran esas dos funciones:

function check_login_password() 
{ 
    $login = $_GET['login']; 
    $password = $_GET['password']; 
    // Work with $login and $password 
} 

y

/** 
* Check login and password 
* 
* @param $login string 
* @param $password string 
* @return boolean 
*/ 
function check_login_password($login, $password) 
{ 
    // Work with $login and $password 
} 

bien, con la primera, usted no tiene que pasar dos parámetros ... Pero esa función no será independiente y no funcionará en cualquier situación en la que deba verificar un par de nombre de usuario/contraseña que no proviene del $_GET.

Con la segunda función, la persona que llama es responsable de pasar los parámetros correctos; lo que significa que pueden venir de donde quieran: la función siempre podrá hacer su trabajo.

1

$ _GET y $ _POST son variables globales. Tienen valores, no métodos. Son sus valores los que desea enviar a las funciones, y las clases/funciones generalmente no deben tener conocimiento de nada que esté fuera de ellos, como de dónde provienen los datos. Muchos usan el atajo para usar las variables globales en las funciones y, por lo tanto, limitan la usabilidad de sus funciones.

0

No necesita enviarlos como parámetros de función, ya que son variables globales (accesibles en cualquier parte del código).

Pero siempre es una buena práctica filtrarlos y validarlos antes de usarlos en su código.

Cuestiones relacionadas