Markus Bauer: Datei global einbinden

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

  1. 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

    1. 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
      
      1. 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