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.