Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    php problema con le variabili globali

    Ciao! Ho un problema con la programmazione ad oggetti in php5:

    esempio (per intenderci)

    class NomeClasse{

    var $var1;

    private __construct(){
    $this->var1="ciao";
    }

    private function funzione1{
    global $var1;
    echo $var1; // NON STAMPA ASSOLUTAMENTE NULLA
    echo $this->var1 // STAMPA "ciao"
    }
    }

    Come mai avviene ciò? come si usa allora global? Non permette di usare le variabili globali internamente ad una funzione?

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    si, ma tu non hai una variabile globale $var1.

  3. #3
    ah, per globale s'intende fuori da ogni classe?
    Beh, come fare allora per avere accesso diretto alla variabile di classe $var1? Necessariamente con $this?

  4. #4
    o meglio: partendo dal fatto di avere delle variabili di classe, come può un metodo modificare le variabili di classe vere e proprie senza crearne prima delle copie? Lo chiedo perchè il passaggio dei parametri per riferimento non ha senso: se una funzione ne deve richiamare un'altra inviando parametri per riferimento, come fa essa stessa però ad avere "potere" di modificare le variabili di classe vere e proprie?

    Vi prego, sono in panne!

  5. #5
    le variabili globali in PHP non sono il massimo e non sono molto consigliate, io non le userei.

    Visto che in PHP5 c'è il pieno supporto alla OOP, io ti consiglierei qualcosa di simile:

    Codice PHP:
    class NomeClasse{  

    private  
    $_var1 NULL;  

    private 
    __construct(){ 

    $this->_var1="ciao"

    }  

    private function 
    funzione1

    echo 
    $this->$_var1// STAMPA "ciao" 




    eventualmente aggiungendo i metodi getter e setter per la variabile, ad esempio:

    Codice PHP:
    public function getVar1() {
      return 
    $this->_var1;
    }

    public function 
    setVar1($value) {
      
    $this->_var1 $value;


  6. #6
    Ok, fino a qui ci sono, ma se voglio fare in modo che le modifiche ad una variabile di classe all'interno di una funzione?

    class NomeClasse{

    private $_var1 = NULL;

    private __construct(){

    $this->_var1="ciao";

    }

    private function funzione1{

    $this->$_var1 = "cambio!";
    echo $this->$_var1; // STAMPA "cambio!"

    }

    echo $_var1; // STAMPA ciao?

    }

  7. #7
    il ragionamento è questo:

    1) quando richiamo il costruttore della classe NomeClasse il valore della proprietà $_var1 sarà impostato a "ciao".

    Codice PHP:
    $nomeClasseObj = new NomeClasse();
    //$_var1 viene impostata su "ciao" 
    2) Il valore rimarrà "ciao" finchè sull'istanza creata non viene richiamata la funzione "funzione1".

    Codice PHP:
    $nomeClasseObj->funzione1();
    //a $_var1 viene assegnato il valore "cambio" 

    Se il punto 2) non si verifica, allora il valore di $_var1 continuerà ad essere "ciao".

  8. #8
    ti ringrazio e SCUSA per la domanda banalissima: sono 6 ore di fila che sono davanti al computer e il mio cervello comincia a mostrare dei bug!

  9. #9

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.