2009-08-30 18 views
7

Sono sbalordito dal codice, in cui i valori GET, ad esempio $_GET['username'], non sono inclusi come parametri per le funzioni.

Quando è necessario includere i metodi POST e GET come parametri delle funzioni?

+2

Qual è la tua vera domanda? L'unica frase (anche se imperfetta) con un punto interrogativo alla fine non ha alcun senso. $ _GET e $ _POST sono globali, possono essere utilizzati ovunque. È una buona pratica di programmazione, forse, forse no. –

risposta

24

Quando si è necessario includere POST e GET metodi come parametri per funzioni?

direi "mai": $_GET e $_POST sono quello che viene chiamato superglobals: essi esistono in tutta la sceneggiatura; il che significa che esistono all'interno di funzioni/metodi.

Soprattutto, non è necessario per voi la parola chiave global.


Eppure, basandosi su quelli nelle funzioni/metodi è piuttosto una cattiva pratica: le funzioni/metodi dovrebbero generalmente non dipendere da niente non passato come parametro.

Quello che voglio dire è; prendere in considerazione queste due funzioni:

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

e

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

OK, con la prima, non c'è bisogno di passare due parametri ... Ma quella funzione non sarà indipendente e non funzionerà in ogni situazione in cui dovresti controllare un paio di login/password che non provengono da $_GET.

Con la seconda funzione, il chiamante è responsabile del passaggio dei parametri corretti; il che significa che possono venire da dove vuoi: la funzione sarà sempre in grado di fare il suo lavoro.

1

$ _GET e $ _POST sono variabili globali. Hanno valori non metodi. Sono i loro valori che si desidera inviare alle funzioni, e le classi/le funzioni dovrebbero generalmente non essere consapevoli di qualsiasi cosa al di fuori di esse, ad esempio da dove provengono i dati. Molti usano la scorciatoia di usare le variabili globali nelle funzioni e quindi limitano l'usabilità delle loro funzioni.

0

Non è necessario inviarli come parametri di funzione poiché sono variabili globali (accessibili ovunque nel codice).

Tuttavia, è sempre buona norma filtrarli e convalidarli prima di utilizzarli nel codice.

Problemi correlati