Newsgroup: it.comp.www.php
Titolo: [ piccolo framework ] problemi di include

Ciao a tutti,
Sto giochicciando con la creazione di un piccolo e stupido framework
(o presunto tale da me :p ). Vi spiego brevemente l'entità del progetto
e successivamente vi espongo il problema.
Questo framework nasce per girare su php 4 dopo aver guardato il lavoro
fatto dal vincitore del concorso di php5.
Non ho le competenze per fare un lavoro del genere, sia chiaro... vabbè
cominciamo:
struttura del lavoro:
cIcaro.php
components/standard/*.php ---> componenti del framework (*a)
components/personal/*.php ---> componenti utente per il sito xyz (*)
components/extra/*.php    ---> componenti del framework che magari non
                               servono sempre
modules/standard/*.php    ---> moduli (funzioni) del framework
modules/personal/*.php    ---> moduli utente per il sito xyz (*)
(*) = l'elenco dei file varia da progetto a progetto.
(*a) = contiente una serie di classi per gestire:
        una pagina
        un database
        l'accesso a filesystem
        l'invio di mail
        ecc...
sto pensando ad un oggetto chiamato Icaro che si può instanziare in un
ipotetico index.php così:
        include "framework/cIcaro.php";
        // costanti 
        define (K_EXT, ".part");
        define (K_PGSITE,"main_content/");
        define (K_PGSTATIC,"pages/static/");
 
        $site= new cIcaro();
        $site->AddPage(K_PGSITE."html_header".K_EXT,"header");
        if (is_null($_GET["action"]))
                $site->Execute(GetSeason);
        else
                $site->AddPage(K_PGSTATIC.$_GET["action"].K_EXT,"body");
        $site->AddPage(K_PGSITE."html_footer".K_EXT,"footer");
        $site->Render();
quando viene instanziato cosa fa?
- si preoccupa di passare le directory della sua struttura, instanziare
  i componenti/moduli standard e personal, serializzarli e di
  deserializzarli alla succesiva pagina visitata (tramite le sessioni faccio
  il controllo - teoricamente così non perdo tempo nel ricaricare tutto)
AddPage invece permette di aggiungere un elenco di pagine nella collezione
di Icaro.
$site->Render non fa altro che passare le pagine, farle deserializzare da
cPage (l'oggetto per le pagine) e Renderizzarle.
Per quanto riguarda la gestione delle classi non trovo particolare problemi
per ora dato che deserializzandoli ho il riferimento ad un oggetto...
Ora che avete capito cosa sto tentando di fare vi spiego il mio problema:
$site->Execute(GetSeason);
GetSeason è una funzione di modulo (modules/standard/*.php).
Al momento sto tentando questa via senza esito:
function Execute($function)
{       
        for ($intIndex=$this->intArrValue;$intIndex<=count($this->arrModules);  
                $intIndex++)
        {
                include $this->arrModules[$intIndex]["obj"];
        }
        $arr = get_defined_functions();
        while (list($type,$list) = each($arr))
        {
                if ($list == $function) $list;
        }
}
ma non funziona. avete idee?
Inoltre mi iacerebbe poter usare una sintassi tipo $site->GetSeason();
-- 
[ Running Linux Suse 9.1 Professional ]
 ~ 
http://www.lasteden.it
 ~ ICQ: 61670579
 ~ Coltiva Linux che tanto Windows si pianta da solo

 function Execute($function)
<cut>
si vabbè potevo scriverla così:
function Execute($function)
{       
        for ($intIndex=$this->intArrValue
$intIndex<=count($this->arrModules);  
                $intIndex++)
        {
                include $this->arrModules[$intIndex]["obj"];
        }
        $function();
}
ma non va ugualmente... anzi prima ho dimenticato di dirvi che ottengo
questo messaggio dal browser tramite messagebox
Redirection limit for this URL exceeded. Unable to load the requested page.
This may be caused by cookies that are blocked
ugh??
