2012-05-16 9 views
5

Próbując przyspieszyć mój przepływ pracy i pomóc faceci z zaplecza z integracją (jestem deweloperem z przodu) próbuję rozszerzyć plik o funkcję poprzez zawijanie komentarzy wokół każdego pliku include, aby wypisać jego nazwę pliku:Plik PHP zawiera funkcję wewnętrzną, zachowuje zmienne globalne. (Próbuję zawinąć komentarze HTML)

function include_module($path) { 
    echo "\n\n<!-- MODULE: ".basename($path, '.php')." -->\n"; 
    include($path); 
    echo "\n<!-- /MODULE: ".basename($path, '.php')." -->\n\n"; 
} 
include_module('form-controls.php'); 

Powoduje to utratę dostępu do dowolnych zmiennych ustawionych poza funkcją. Wiem, że można zrobić:

global $var 

Ale to tylko daje mi dostęp do $ var (Jestem świadomy mogłem zrobić $ var [ „”] zm1 itp), czy jest jakiś sposób, żeby zrobić „globalny wszystko "czy ktoś może pomyśleć o innym podejściu do zawijania komentarzy?

Cheers :)

+0

Możesz przekazać '$ GLOBALS' jako argument ... ale będziesz nadal musiał uzyskać do niego dostęp za pomocą tablicy z tej funkcji, chyba że nazwiesz' extract() '. Nie jest to chyba dobry pomysł ... – prodigitalson

+1

@prodigitalson nie trzeba przekazywać żadnego z superglobałów jako argumentu, są one dostępne w dowolnym zakresie. –

Odpowiedz

5

Spróbuj tego:

function include_module($path) { 
    foreach($GLOBALS as $name => $value) global $$name; 
    echo "\n\n<!-- MODULE: ".basename($path, '.php')." -->\n"; 
    include($path); 
    echo "\n<!-- /MODULE: ".basename($path, '.php')." -->\n\n"; 
} 
include_module('form-controls.php'); 
+3

patrz [wyciąg] (http://www.php.net/extract)() – goat

+1

To lub wyciąg dostaje mój głos – Jay

+0

Dzięki, że działa idealnie. – 4lun

5

można użyć następujących czynności, aby uzyskać dostęp do globalnych.

extract($GLOBALS, EXTR_REFS);