kostenloser Webspace werbefrei: lima-city


PageLoader in PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    s******i

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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:
    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
    }
    So wäre dein Code wesentlich kürzer und etwas leichter zu warten.

    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:
    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();
    Auf diese Weise sind die Variablen aus der Datei header.php für die Funktionen aus einer der Seitendateien nicht mehr Sichtbar.

    Mit freundlichen Grüßen
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!