PHP als Template Engine

Hallo,

Du hast warscheinlich ein problem mit dem aufruf Kontext in dem dein Template file geladen wird.

Wenn du innerhalb einer funktion include() oder require() verwendest um dateien nachzuladen, so wird dieser code teil der funktion. Das heisst alle lokalen variablen der funktion stehen für den eingebunden code zur verfügung als wären sie global.
Alle globalen variablen stehen nur über $GLOBALS zur verfügung.

Hier ein kurzes beispiel dass es veranschaulicht:

Dieser code müsste deinen fehler nachstellen:

bar.php
PHP:
echo $foo;
index.php
PHP:
$foo = "hallo";

function load_me() {
  include "bar.php";
}

load_me();

Nun füren wir das include mal manuell aus, und gucken was passiert:

PHP:
$foo = "hallo";

function load_me() {
  //include "bar.php"; BEGIN
    echo $foo;
  //include END
}

load_me();

Nun dürftest du sehen, wo das Problem her kommt.

Um es zu umschiffen, kannst du entweder vor dem include alle variablen die du übergeben willst global definieren, oder in deinem template das $GLOBALS array verwenden.

Beispiel 1:
bar.php
PHP:
echo $foo;
index.php
PHP:
$foo = "hallo";

function load_me() {
  global $foo;
  include "bar.php";
}

load_me();

Beispiel 2:
bar.php
PHP:
echo $GLOBALS['foo'];
index.php
PHP:
$foo = "hallo";

function load_me() {
  include "bar.php";
}

load_me();
 
Hallo Leute,
leider konnte ich bis heute nichts weiter dran machen, da ich kaum Zeit habe und ständig auf Achse bin. ;-)

Dennoch seh ich bei dieser Variablen Geschichte immer noch nicht richtig durch.
 

Neue Beiträge

Zurück