Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Variabili PHP

  1. #1

    Problema Variabili PHP

    Salve a tutti ho un problema che potrebbe essere una stupidata ma io sono un principiante.
    Non vengono memorizzati i valori all'interno delle mie variabili.
    codice:
    $var1;
    $var2;
    $...
    function Prova ()
    {
    ...qui dentro setto le mie variabili
    }
    echo $var1;
    //poi provo ad andare a stampare e non c'è nulla
    Grazie a tutti ciao

  2. #2
    Ciao,
    le variabili dichiarate o settate all'interno di una funzione sono valide solo nella funzione stessa.
    Per renderle "globali" occorre dichiararle globali, così:
    codice:
    $var=4;
    function settaVar($num) {
    	global $var;
    	echo "step2: \$var è $var
    ";
    	$var= $num;
    	echo "step3: \$var è ora $var 
    ";
    }
    
    echo "step1: \$var è $var";
    settaVar(20);
    echo "step4: \$var è sempre $var";
    Codice non testato

  3. #3
    cosa che comunque ti sconsiglio di fare perché global oltre a essere lento (l'ha detto uno dei creatori di php, non io) crea un sacco di confusione nel codice

    ma se proprio devi usare un sistema del genere usa $GLOBALS che almeno è più veloce.

    Sarebbe più corretto passare i valori alla funzione (per riferimento eventualmente) o ancora meglio usare delle classi ^^

  4. #4
    Grazie mille a tutti.Ho risolto con $GLOBALS.
    Tra l'altro una funzione del genere sarebbe fondamentale anche in c#.
    Ciao a tutti.

  5. #5
    no, una funziona del genere non sarebbe fondamentale in C# (ci programo): usare globals è segno di cattiva progettazione

    La soluzione migliore sarebbe ovviamente usare le classi passando al costruttore quello che serve cosi da avere eventuali dati disponibili all'interno della classe

  6. #6
    Fidati di daniele_dll...
    una volta in un grossissimo progetto (scritto in php3 quindi niente classi e niente di "bello", e soprattutto non scritto da me =)) avevo per sbaglio sovrascritto una variabile dichiarata globale in cima all'enorme funzione.

    Risultato? tre ore di debug per poi scoprire l'amara realtà.

    E' bene sempre usare classi o comunque un corretto incapsulamento.. anche in progetti piccoli, perché la maggior parte di essi a lungo andare diventano grandi! =)

    Personalmente credevo, sbagliando, che la variabile $GLOBALS non fosse sempre accessibile in tutte le configurazioni php.ini. Per questo non l'avevo evidenziata.

    Saluti

  7. #7
    Si ma per esempio io sto creando una DLL in c# per gestire le eccezioni.
    Quando qualche utente usa una delle mie applicazioni e viene generata un'eccezione la mia DLL mi notifica l'eccezione e io avevo pensato di farmi inviare anche tutte le variabili presenti nel metodo dove è stata generata per vedere in che stato sono però non esiste un metodo che le raggruppi tutte e quindi o lo faccio a mano creandomi 2 liste, una con i nomi e una con i valori, oppure mi attacco al tram.

  8. #8
    Non c'entra nulla con l'argomento, ma guarda che tu nell'eccezione hai anche i singoli frame con il relativo contesto dell'esecuzione ........

  9. #9
    forse mi sono spiegato male perchè io non conosco nessun modo per avere un "qualcosa" che mi dice in che stato sono le mie variabili...mi servirebbe il loro nome, il tipo e il valore....

  10. #10
    Originariamente inviato da thedestroyer90
    forse mi sono spiegato male perchè io non conosco nessun modo per avere un "qualcosa" che mi dice in che stato sono le mie variabili...mi servirebbe il loro nome, il tipo e il valore....
    Ciao,

    premesso che se vogliamo continuare la discussione conviene continuare nel forum apposito, è normale che non hai quelle informazioni perché sono informazioni in memoria e devi leggerli da li.

    Dai un occhiata a questo thread su Stack Overflow
    http://stackoverflow.com/questions/1...rgument-values

    E a questa pagina qui
    http://www.debuginfo.com/tools/clrdump.html

    (Ti agganci alla libreria, effettui il dump, ed estrai le informazioni che ti servono ... ovviamente l'applicativo non deve essere offuscato e deve essere compilato con le informazioni di debugging altrimenti vedo molto difficile ottenere delle informazioni utili dal dump)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.