Ciao a tutti,
è corretto controllare se una variabile è settata prima di vedere se è uguale a qulcosa, oppure è solo un operazione in più che rallenta il processo?
if ( isset( $var ) && $var == 'qualcosa' )
vs
if ( $var == 'qualcosa' )
grazie mille!
Ciao a tutti,
è corretto controllare se una variabile è settata prima di vedere se è uguale a qulcosa, oppure è solo un operazione in più che rallenta il processo?
if ( isset( $var ) && $var == 'qualcosa' )
vs
if ( $var == 'qualcosa' )
grazie mille!
se sei sicuro che la variabile esista, usa il secondo metodo
No
Una variabile inesistente, genera un errore di tipo Notice.
In ambienti di produzione, questi errori vengono di solito "spenti" ma l'errore c'è, prova questo snippet:
Codice PHP:error_reporting(E_ALL);
ini_set('display_errors', '1');
echo "ciao $prova";
Pensate i programmi a librerie, e innalzate il livello d'astrazione
e lo so che genera una Notice.
Ma mi sembra che una notice non sia proprio un errore, oppure si?
In produzione la notice non viene notificata, ma in dev si.
Quindi la buona norma è non avere alcun tipo di notice oppure una come questa non è un problema grave?
come da manuale, isset Restituisce TRUE se la variabile esiste e ha un valore diverso da NULL, FALSE in caso contrario. Quindi due osservazioni:
1) Provare ad usare una variabile che non esiste è da scriteriati, anche mettendoci il controllo isset prima. Le variabili esistono, al piu contengono valori null o diversi da null. Se stai facendo un qualcosa che non sia sicuro che la variabile esista, rifallo. Potrebbe aver un minimo senso sugli array, ma userei in quel caso array_key_exists che isset
2) Dato quindi per scontato che la variabile esiste, non serve isset all'inizio e puoi mettere direttamente il check sull'uguaglianza dopo, visto che come minimo la variabile è uguale a NULL.
IP-PBX management: http://www.easypbx.it
Old account: 2126 messages
Oldest account: 3559 messages
Oddio, per rispondere completamente alla domanda, fare "if ( $undefined == 'qualcosa' )" non è sbagliato. Se var non è definita allora viene interpretata come valore NULL, quindi il tuo programma funziona come ti aspetteresti. Sembra che non ci siano problemi, ma potrebbero comunque saltare fuori. Soprattutto quando diventa una abitudine. Ti devi mettere sempre in condizione di lavorare con variabili che esistono, ed è il motivo per cui compare quel notice fastidioso. Dopotutto stai facendo una cosa piuttosto strana, sia dal punto di vista dell'interprete, che ti informa con questo errore di basso livello, sia dal punto di vista di un altro programmatore, che avrà da farsi ben più di un paio di domande . E' fortemente raccomandato verificare sempre l'esistenza della variabile prima di usarla per fare confronti o altro. Altrimenti potresti trovarti di fronte a comportamenti imprevedibili, il tuo programma potrebbe non lavorare come ti aspetteresti, e il debug potrebbe richiedere più tempo di quanto servirebbe. Dopotutto se ti aspetti che una variabile possa o non possa esistere, ha decisamente senso verificare che sia definita prima di utilizzarla nel contesto in questione. E se un giorno includerai quel file da un altra parte, chissà cosa può succedere. Non puoi trattare una variabile indefinita impunemente.
Ultima modifica di .Kurt; 07-01-2015 a 21:33
Si, avete ragione sotto tutti i punti di vista.
Mi ritrovo dentro wordpress dove a seconda del template utilizzato mi vengono restituite cose differenti.
Forse devo fare uno switch per ogni caso e abbandonare la prigrizia!
grazie mille e buona gioranta!