PageLoader in PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abgeben
all
array
break
code
entsprechende datei
erstes programm
funktion
gut code
header
laden
leiten
modularisierung
nennen
page
post
sagen
start
switch
-
Hallo,
da ich länger nicht mehr an meinem Content meines Webspaces herum gespielt habe, war es wirklich mal wieder höchste Zeit, mein miniPHP-Forum auszubauen. Da das so ziemlich mein erstes Programm (Falls man das so überhaupt nennen darf) sieht das auch dementsprechend aus... Jetzt bin ich leider etwas verunsichert, wie ich mein Skript zu gestalten habe. Beispielsweise möchte ich anhand einer Get-Variable die entsprechende Seite laden. Soweit klappt das auch gut:
static $pages = array( "start" => "start.php", "thema" => "threadview.php", "thread" => "thread.php", "new_thread" => "thread.php", "answer" => "new-post.php", "user" => "user.php", "pages" => "pages.php" ); /** * Function include the right page */ function get_page($str) { // the page-hash global $pages; require("header.php"); if (array_key_exists($str, $pages)) { require($pages[$str]); } else { echo "There was an Error! Page doesn´t exist!"; } require("footer.php"); } // if no page is given, we have $seite to to start if ($seite == "") { $seite = "start"; } get_page($seite);
Allerdings weiß ich nicht, ob ich es der beste Weg ist, einfach die entsprechende Datei mit all seinem Inhalt zu includieren, da es zu Problemen können könnte, da zB. Variablen überschrieben werden könnten (Leider bietet die Sprache keine Modularisierung an, zumindest wäre mir das bekannt). Ich habe mir schon überlegt ein OOP-Paradigma zu verwenden (Also alle Seiten leiten von der Klasse PageElement ab, welche eine abstrakte Methode 'getHTMLPage()' hat. Finde ich persönlich aber ein wenig Aufwendig und vllt. sogar Fehl am Platz, da OOP hier einfach unnötig Arbeit machen würde. Was meint ihr?
Beitrag zuletzt geändert: 26.5.2011 16:55:13 von spuglisi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
So dann wil ich mal meinen Senf dazu abgeben…
Du hast ja 2 Fragen formuliert (zwar etwas umständlich aber OK):
1.) Ist die Form die Seiten einzubinden gut gelöst?
Ich würde sagen Nein, du lädst alles in eine Funktion und hohlst dir dann ersatzweise die globalen Variablen in die Funktion, das ist nicht so schön. Außerdem definierst du ein Array an Seiten, das ist OK, aber es wäre schöner, wenn du die Seiten via switch-Abfrage definierst:
So wäre dein Code wesentlich kürzer und etwas leichter zu warten.include "header.php"; switch($seite){ case "thema": include "threadview.php"; break case "thread": include "thread.php"; break case "new_thread": include "thread.php"; break case "answer": include "new-post.php"; break case "user": include "user.php"; break case "pages": include "pages.php"; break case "start": default: include "start.php"; break }
2.) Wie kannst du es verhindern, das globale Variablen überschrieben werden, nun dazu gibt es seit PHP 5.3 das ist aber hier bei lima noch nicht verfügbar. Stattdessen kannst du das aber durch Funktionen kapseln, das machst du dann z.B. so:
Auf diese Weise sind die Variablen aus der Datei header.php für die Funktionen aus einer der Seitendateien nicht mehr Sichtbar.function load_header(){ include "header.php"; } function load_page($seite){ switch($seite){ case "thema": include "threadview.php"; break case "thread": include "thread.php"; break case "new_thread": include "thread.php"; break case "answer": include "new-post.php"; break case "user": include "user.php"; break case "pages": include "pages.php"; break case "start": default: include "start.php"; break } } // alles laden, so dass es keine Namenskonflikte gibt. load_header(); load_seite();
Mit freundlichen Grüßen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage