Newsgroup: it.comp.www.php
Titolo: eliminazione di un require??

Salve,
 vorrei sapere se dopo avere incluso un file tramite require è
possibile rimuovere lo stesso tramite un'altra istruzione php.
grazie anticipatamente per le vostre risposte

 possibile rimuovere lo stesso tramite un'altra istruzione php.
No, ma quale e' la tua reale necessita'?
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

 No, ma quale e' la tua reale necessita'?
Nel file principale A ho incluso tramite require un file di
configurazione contenente un serie di costanti e anche un'altra pagina
B.
Nella pagina B, voglio includere un altro file di configurazione
tramite require, mantenendo gli stessi nomi delle costanti presenti
nel file di configurazione della pagina A.
Ovviamente essendo delle costanti, non è possibile sovrascrivere i
loro valori come succederebbe con delle semplici variabili.
Quindi l'unica soluzione che mi è venuta in mente, per risolvere
questa mia esigenza, è quella di eliminare il primo file di
configurazione e sostituirlo con il secondo.
P.S: ovviamente, questo problema non lo avrei avuto se avessi
utilizzato delle costanti, ma per varie ragioni, sono costretto ad
utilizzare solo costanti

 nel file di configurazione della pagina A.
Questo e' quello che stai facendo.
Quale e' la necessita' che sta alla base di questo comportamento?
Il comportamento della pagina B quando e' inclusa in A e' diverso da
quando non viene inclusa (es. il comportamento cambia in base alla
valorizzazione delle costanti)?
Perche' non puoi utilizzare delle variabili al posto delle costanti?


nel file di configurazione della pagina A.
Ti stai mettendo veramente nei guai. Una configurazione cosi' non e'
manutenibile, e potrebbe, anche usando variabili, produrti risultati
imprevedibili.
Il vantaggio dell'uso delle costanti e' proprio questo, che un guaio
del genere automaticamente ti e' reso impossibile; che non ci riesci
neanche per errore.
In un caso del genere la soluzione buona e' cambiare l'architettura.
Una soluzione di ripiego (ma tutti i ripieghi fanno onco, in casi di
questo genere) e' leggere il file di configurazione come se fosse un
file di testo, o quasi. file_get_contents e preg_match_all e via. Ti
costruisci una funzione
	function get_defines($file)
	{
	}
che ritorna un array nome=>valore, e nel caso puoi importarlo, cosi'
da avere le variabili con i soliti nomi. Ma saranno variabili. E non
devi farlo se non nei file che danno conflitti esoterici...
Leonardo
--
The stars have not dealt me the worst they could do:
My pleasures are plenty - my troubles are two.
But oh!, my two troubles, they reave me of rest:

devi farlo se non nei file che danno conflitti esoterici...
<?php	// THIS FILE HAS BEEN TESTED BY ABEL :-D
        function get_definitions($file)
        {
                $preg   =
"/define\s*\(\s*['\"](.*)['\"],\s*['\"](.*)['\"]\s*\)\s*;\s*/i";
                if (!file_exists($file))        return array('error' =>
'file not found');
                if (!is_readable($file))        return array('error' =>
'file not readable');
                $phpcode = @file_get_contents($file);
                $phpcode = preg_match_all($preg, $phpcode, $gregs,
PREG_SET_ORDER);
                $DEFINES = array();
                foreach($gregs as $greg)
                {
                        list($dummy, $key, $value) = $greg;
                        $DEFINES[$key] = $value;
                }
                return $DEFINES;
        }
        // Risparmiare spazio disco per i test: legge se stesso :-)
        extract(get_definitions(__FILE__), EXTR_PREFIX_ALL, 'VAR');
        print "CONST_1 vale $VAR_CONST_1\n";
        define('CONST_1', "pippo");
        define (        'CONST_2','pluto');
        define  ('CONST_3',  '\"pluto\"');
        define (        'CONST_4', "'pluto'") ;
   //   thisisafeaturenotabugdefine (        'CONST_5','pluto')      ;
        define (        'CONST_6','pluto' );
?>
