Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155

    [PHP] Problema visibilità variabili

    Salve a tutti ragazzi!

    Mi sto dilettando a creare un sito in php, ed ho questo problema:
    le variabili istanziate nel documento non sono leggibili da dentro una funzione

    Codice PHP:
    $variabile 'ciao';

    function 
    StampaVariabile(){
       echo 
    $variabile//non stampa nulla, ovvio direi

    Lo so che per ovviare il problema basterebbe passare la variabile come argomento della funzione, però speravo ci fosse una soluzione diversa (tipo una specie di attributo public alla variabile, che si può usare solo nelle classi) perchè il codice sta diventando lungo e pieno di funzioni...

    Spero riusciate a darmi una risposta diversa da 'mi disp, ma nn si può'....

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    prova a mettere l'attributo "global" prima della variabile nella funzione...

    codice:
    $a = 5;
    $c = abc();
    function abc(){
    global $a;
    print $a."\n";
    }
    print $a;
    Dall'esempio otterremo:
    5
    5

  3. #3
    Utente di HTML.it L'avatar di duri93
    Registrato dal
    Dec 2008
    Messaggi
    155
    Perfetto!! Funziona !

    Grazie mille!

    Bravissimo e velocissimo! GRAZIE!

  4. #4
    Comunque fai attenzione, a meno che non ci siano specifiche necessita' (che non sono molto comuni) e' meglio evitare di usare variabili globali.

  5. #5
    perchè?
    Ciao!

  6. #6
    Perche' le variabili globali, essendo appunto globali, possono essere modificate in qualsiasi punto ed e' molto difficile il debug se sorgono problemi. Se usi variabili private, sei sicuro che le funzioni non possano modificare nulla al di fuori del loro campo di azione, con variabili globali una funzione puo' modificare il comportamento di tutto lo script. E ti assicuro che certe volte e' un inferno trovare il bug.

    Se una funzione fa solo il suo lavoro senza "effetti collaterali" lo sviluppo e' molto piu' ordinato e mantenibile.

  7. #7
    Utente di HTML.it L'avatar di thor92
    Registrato dal
    Sep 2008
    Messaggi
    89
    Originariamente inviato da k.b


    Se una funzione fa solo il suo lavoro senza "effetti collaterali" lo sviluppo e' molto piu' ordinato e mantenibile.
    quoto in pieno !

  8. #8
    Originariamente inviato da k.b
    Perche' le variabili globali, essendo appunto globali, possono essere modificate in qualsiasi punto ed e' molto difficile il debug se sorgono problemi. Se usi variabili private, sei sicuro che le funzioni non possano modificare nulla al di fuori del loro campo di azione, con variabili globali una funzione puo' modificare il comportamento di tutto lo script. E ti assicuro che certe volte e' un inferno trovare il bug.

    Se una funzione fa solo il suo lavoro senza "effetti collaterali" lo sviluppo e' molto piu' ordinato e mantenibile.
    La funzione può fare il suo lavoro anche se usa variabili globali al proprio interno
    Ciao!

  9. #9
    Originariamente inviato da fmortara
    La funzione può fare il suo lavoro anche se usa variabili globali al proprio interno
    Ma non puoi essere sicuro che lo faccia senza "effetti collaterali".

    Metti che hai una variabile, chesso' $prezzo che contiene il prezzo di un oggetto al netto dell'iva. Poi hai una funzione remota, magari in un file incluso, che usa questa variabile dichiarandola global e per i suoi calcoli ci aggiunge l'iva. Dopo l'esecuzione della funzione ti ritrovarai la tua $prezzo modificata e non sara' immediatamente chiaro il perche'.

  10. #10
    Benchè concettualmente sia daccordo sul fatto che sarebbe meglio non usare variabili globali nelle funzioni, personalmente ritengo che usare variabili globali anche nelle funzioni , con le dovute precauzioni, possa in molte occasioni far risparmiare tempo di scrittura del codice, quantità di codice e tempo di esecuzione.

    Considerate ad esempio JavaScript, dove tutte le variabili dello scope principale sono automaticamente globali: richiederà maggiore consapevolezza al programmatore, ma permette molte scorciatoie che, usate sapientemente, possono semplificare notevolmente la vita.

    Comunque resta indiscusso che, se il lavoro non è ben fatto, "certe volte e' un inferno trovare il bug".
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

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.