Visualizzazione dei risultati da 1 a 8 su 8

Discussione: isset or not isset?

  1. #1

    isset or not isset?

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    se sei sicuro che la variabile esista, usa il secondo metodo
    No

  3. #3
    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

  4. #4
    Quote Originariamente inviata da zoc Visualizza il messaggio
    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!
    Si, ma metti anche un else con messaggio di errore, almeno ti è più facile capire in futuro se ti sei scordato di settarla

  5. #5
    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?

  6. #6
    Quote Originariamente inviata da zoc Visualizza il messaggio
    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

  7. #7
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    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

  8. #8
    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!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.