problema con extract()

Salve a tutti! ^^ Sono nuovo nel forum... ma ho già un bel problema    :'(

Ho scritto alcune classi per le gestione di un sito web,. implementando uno schema simile al pattern MVC:

Una classe controller carica i moduli, ovvero le altre classi php che provvedono l'output, ed inizializza la classe template.

Quest'utlima classe carica un template html (contenente appositi tags e codice php) e lo compila con l'output dei moduli.

in sostanza il file index.php consosterà in poche righe di inzializzazione:

include('controller.class.php');
$c = new controller('templates/bubble/index.tpl');
$roles = array('guest');
$c->logModule("hello",$roles);
$c->logModule("books",$roles);
$c->view->display();

Il metodo logModule(), dice al controller di caricare un modulo ed al template di valorizzare il tag con l'ouput del modulo.

Per ottenere questo risultato procedo in un modo simile al seguente

$template->assignTag("nome_modulo",$modulo->output());

In realtà questa operazione non deve essere fatta direttamente, ma viene mediata leggermente dal controller.

il file html conterrà quindi tags simili al seguente

{$nome_modulo}

sta alla classe template riformattare il template html e valorizzare le variabili

ECCO il problema....

Valorizzo le variabili con la funzione extract() passandogli un array associativo membro della classe template...

la valorizzazione avviene in due passi:

prima carico le variabili in un array associativo con la funzione prvata _addVar(), poi il meotdo _registerVars() esegue extract() su tutte le variabili registrate nell'array.

Ma le variabili non vengono affatto valorizzate... ed il template resta vuoto     :buck:

e non capisco assolutamente il perchè... ho pensato a problemi di visibilità delle variabli ma non ne sono venuto a capo...

tenete presente che la classe di template esegue un include() sul template compilato

inoltre un template compilato consiste in un file che al posto di tags

{$nome_modulo}

ha codice del tipo

echo $nome_modulo

scusate se il post è un po lunghetto ma ho cercato di farvi capire il contesto... se cè bisogno vi posto il codice completo..

grazie mille ^^

inviato 8 anni fa
fatmatt
X 0 X

l'extract crea delle variabili di tipo "locale" visibili solo nella funzione in cui sono state estratte. Se l'include viene fatto dalla stessa funzione che ha eseguito l'extract allora non dovresti avere problemi.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

come direbbe Apache:

IT WORKS!

grazie mille ^^ devo stare decisamente più attento  ???

avevo diviso il codice in troppe funzioni...  :buck:

risposto 8 anni fa
fatmatt
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda