PHP: $ _GET e $ _POST in funzioni?

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

Quando è necessario includere i methods POST e GET come parametri per le funzioni?

Quando è necessario includere i methods POST e GET come parametri per le funzioni?

Direi "mai": $_GET e $_POST sono quelli che vengono chiamati superglobali : esistono nell'integer script; il che significa che esistono all'interno di funzioni / methods.

Soprattutto, non è necessario per te la parola chiave global per quelli.

Tuttavia, fare affidamento su quelli delle vostre funzioni / methods è una pratica abbastanza negativa: le vostre funzioni / methods generalmente non dipendono da nulla che non sia passato come parametro.

Ciò che voglio dire è ; considera 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 il primo, non devi passare due parametri … Ma quella function non sarà indipendente e non functionrà in nessuna situazione in cui dovresti controllare un paio di login / password che non provengono da $_GET .

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

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

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

Ma è sempre buona norma filtrarli e validationrli prima di utilizzarli nel codice.