Sven Rautenberg: Gültigkeitsbereich Variable

Beitrag lesen

Moin!

Nur: Eine Template-Engine will ich vorderhand nicht verwenden, will das mal selbermachen um was zu lernen.

Dann mach dir eine Template-Engine selber.

Da du schon eingesehen hast, dass es sinnvoll ist, vernünftig zu schreiben: Du mußt einfach deine Möglichkeiten besser ausnutzen.

Aus Funktionen heraus auf globale Variablen zuzugreifen ist ultraböse. Egal, ob das mit "global $var" oder "$GLOBALS['var']" geschieht: MAN MACHT ES NICHT! Es führt garantiert zu Problemen, weil du dann über alle verwendeten Dateien hinweg, über alle beteiligten Funktionen hinweg, garantieren mußt, dass keine Funktion irgendeinen globalen Variablennamen aus Versehen doppelt verwendet!

Da solch eine Übersicht nur besteht, wenn man nicht mehr als eine globale Variable verwendet (um es mal extrem auszudrücken), würdest du dir extreme Fehlerquellen einbauen.

Das, was du willst, ist ja im Prinzip schon gut: Oben Informationen sammeln, unten ausgeben.

Dazu solltest du dann aber "einfach" die "richtigen" Methoden anwenden.

---schnipp---
<?php
$BuchTitel="WasserKochenLeichtGemacht";

function ZeigBuchTitel () {
 return $BuchTitel;
}
?>
<head>
</head>
<body>
<?php echo ZeigBuchTitel() . "Anzeige 1"; ?>
<?php echo $BuchTitel . "Anzeige 2"; ?>
</body>
---schnapp---

Das Problem bei deinem Code hier: Du definierst eine globale Variable. Das gibt die Aussicht auf mehr. Denn du brauchst ja nicht nur $Buchtitel, sondern auch $BuchISBN_Nummer, $BuchBeschreibung, $BuchPreis, $BuchRating und $BuchCoverBild.

Sowas in globale Variablen zu packen ist ungeschickt. Besser: Fasse deine fürs Template bestimmten Informationen in einem Array zusammen.

$template['buchtitel']="WasserKockenLeichtGemacht";
...

<?php echo $template['buchtitel']; ?>

Mit diesem Array kannst du dann auch Funktionen beliefern bzw. Funktionsergebnisse in das Array reinspeichern. Du weißt aufgrund des Arraynamens sofort, dass es sich um Daten fürs Template handelt, und du weißt aufgrund des Arrayindices, welche Information es sein soll. Irgendwo im Template wird der Wert dann verarbeitet werden.

- Sven Rautenberg

--
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)