Passare un Array alla Classe

Non riesco a capire come passare un array contenuto in un file alla classe

// se includo il file così:

include ('config.inc');

// config contiene un array del tipo: $setup = array('db_type' => 'mysql','db_host' => "localhost");

// ora creo la classe:

class Application extends Smarty {

   var $setup; // in questo modo passo l'array oppure lo azzero?

   function Application () {
      $this->assign('setup', $setup); // inizializza l'array del file config passandolo a Smarty
   }
}

in questo modo però non ricevo ne errori ne altro. L'array risulta vuoto.

se stampo l'array così:

echo '<pre>';
print_r ($setup);
echo '</pre>';

l'array risulta vuoto.

Vorrei capire come si gestiscono le variabili nelle classi, credo che il termine sia 'scope' ossia il campo della loro validità.

inviato 10 anni fa
arjuna
X 0 X

E' un problema di "visibilità".

All'interno di una funzione o di un metodo (funzione di una classe) sono visibili SOLO le variabili dichiarate localmente ovvero all'interno della funzione stessa.

Con var $nome_variabile dichiari una variabile membro (della classe), che potrà essere utilizzata all'interno di un metodo con $this->nome_variabile

Per interagire con variabili esterne ci sono 2 modi:

1) passi le variabili come parametri della funzione (o del metodo)

function Application ($variabile_esterna) {

ovviamente per istanziare un oggetto dovrai procedere così:

$applicazione = new Application($variabile_esterna);

supponendo che la precedente istruzione non si trovi a sua volta all'interno di una funzione o di un metodo ma che sia nel programma principale.

2) utilizzi il comando global

all'interno della funzione (o del metodo) in cui vuoi avere la visibilità di una variabile esterna (globale) devi inserire:

global $variabile_esterna;

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda