Datei global einbinden
Markus Bauer
- php
0 XaraX0 Markus Bauer0 XaraX
Hallo
Ich habe folgendes Problem:
Bis jetzt binde ich Kopf und Fuss mittels require ein.
Jetzt bin ich dabei, das Konzept der Seite zu überarbeiten und zu "objektisieren" und hab eine Klasse "Page" erstellt, wo der Programmierer Page::Header bzw. Page::Footer aufrufen soll, um Kopf und Fuss einzubinden.
Allerdings *MUSS* *vorerst* aus Kompatibilitätsgründen die alte Variante auch möglich sein, wo die ganze Masse an Sachen, die z.B. header.inc.php gemacht werden, global ist.
Wenn ich aber jetzt habe
function Header()
{
...
include("header.inc.php");
...
}
Dann ist das Skope aller Variablen aber lokal.
Kann ich IRGENDWIE (mir ist jede Krückenlösung recht, da das nur vorerst ist!) in einer Funktion eine Datei einbinden, wobei aber *alles* was darin geschieht im globalen Namespace sein soll?
Vielen Dank!!
Markus
Nabend Markus,
Krückenlösung:
<?php /* var.inc */
$a=array('a'=>0,'b'=>1);
?>
<?php /* arbeits.php */
unction mkvar(){
include('var.inc');
$GLOBALS=$GLOBALS+$a;
}
mkvar();
print_r($GLOBALS);
?>
Gruß aus Berlin!
eddi
Nabend Markus,
Krückenlösung:
<?php /* var.inc */
$a=array('a'=>0,'b'=>1);
?><?php /* arbeits.php */
unction mkvar(){
include('var.inc');
$GLOBALS=$GLOBALS+$a;
}
mkvar();
print_r($GLOBALS);
?>
Danke vorerst einmal, allerdings habe ich das Problem, dass in der Datei, die ich include, also header.inc.php einen Haufen Code eingebunden und initialisiert wird, den ich nicht selbst warte, z.B. die komplette phpbb Maschinerie.
Das ist traurig, ich weiss :-(
An so eine Loesung hab ich eben auch schon gedacht, aber da müsste ich eben wie gesagt alles umschreiben, auch phpbb und genau das kann/will ich ja nicht.
gibts vl. noch was andres?
mfg
markus
Re:
gibt doch bitte ein Beispiel(! keinen ganzen Code) was genau zu machen ist, weil Dein Problem hängt (mir zumindest ersichtlich) nur daran, daß Du include() in einer Funktion aufrufst und mutmaßlich noch andere Funktionen mit den Variablen bestücken mußt.
[code lang=php]
<?php /* ungetestet */
$copy_globals=$GLOBALS;
inclue('header.inc');
$GLOBALS=$GLOBALS-$copy_globals;
/* Funktionsdefinitionen
function b1($a){
machwasmit($a);
retunr($a);
}
usw.
*/
$GLOBALS=b1($GLOBALS);
$GLOBALS=b2($GLOBALS);
$GLOBALS=b3($GLOBALS);
Gruß aus Berlin!
eddi