Joomla.it Forum

Non solo Joomla... => Sviluppo => : engp013a 02 Jul 2010, 13:59:15

: Include in comune fra un modulo e una componente
: engp013a 02 Jul 2010, 13:59:15
Salve a tutti,
ho creato un modulo che mi consente di accedere ad una mia tabella  e di visualizzare una riga nella testata del sito in base a certi calcoli.

Ho creato anche una componente che consentisse di accedere allo stesso record tramite il menu.
Dal momento che l'accesso ai dati e il calcolo per i filtri è uguale ho creato un modulo comune.
Nel modulo e nella componente la funzione è presente tramite l'istruzione include di PHP.

Il modulo funziona correttamente, ma appena accedo alla componente tramite il menu mi viene presentato l'errore Fatal error: Cannot redeclare .......

Per quanto riguarda la include nella componente l'ho fatta nel file .php presente nella directory models.

Mi potreste dare una mano?

Grazie mille
: Re:Include in comune fra un modulo e una componente
: mmleoni 09 Jul 2010, 09:16:46
ciao,
 non so  se hai risolto, ma la soluzione è semplice: metti l'include sotto if verificando se è già definito il simbolo (costante/classe...) che php ti dice di non poter ri-dichiarare.

ciao,
marco
: Re:Include in comune fra un modulo e una componente
: engp013a 09 Jul 2010, 10:43:17
No, non ho ancora risolto. Però ho fatto la seguente prova:

Ho preso tutto il codice presente nella include e l'ho inserito dentro la function della componente, quindi senza più richiamare la function della include. Il risultato è che ottengo lo stesso errore su le altre function che utilizzo nel codice copiato all'interno della function della classe.

Per intenderci riporto un esempio:

Classe xxxx{
function yyyy{

             function aaaa{
                  ..........
                  ..........
                  ..........
              }

             altro codice
             .................
             $variabile = function aaaa;
             altro codice
             .................


}

}

Il risultato è  Cannot redeclare.......

Spero di essere stato chiaro.

ciao,
 non so  se hai risolto, ma la soluzione è semplice: metti l'include sotto if verificando se è già definito il simbolo (costante/classe...) che php ti dice di non poter ri-dichiarare.

ciao,
marco
: Re:Include in comune fra un modulo e una componente
: mmleoni 09 Jul 2010, 10:52:49
eri già stato chiaro, forse non lo sono stato io.

1.
hai usato require_once, vero?

2.
nel caso quanto sopra non funzioni:
inserisci come prima riga nel file da includere:

define("MYLIBRARYNAME", "1");

cambia il require in componente/moduli in

if (!defined('MYLIBRARYNAME')) {
   require_once('mylibraryname.php');
}


ciao,
marco

: Re:Include in comune fra un modulo e una componente
: = odino = 11 Jul 2010, 11:01:01
ocio, stai ridichiarando una classe