Hallo zusammen..
Ich habe mal bisschen OOP gelern und meiner 1. kleiner Parser geschrieben. Beim Testen hab ich jedoch ein Fehler Festgestellt.
Wie ihr hier sehen könnt:
http://andys-tools.ch/cms/admin/index.php?page=12
-> Der Error wird nach dem Header und vor dem body ausgegeben, wie ihr dem Quellcode entnehmen könnt.
Ich habe sehr lange gesucht woran das es liegt, biss ich jetzt eignedlich weiss was genau passiert aber nicht wiso, darum konnte ich den fehler aucxh noch nicht beheben.
	
Das sind eigendlich die drei funktionen die ich verwende.
Auf der Index.php parse ich nun das Hauptdesign.
da wird ist ein include, der die jeweilige seite includiert, je nach $_GET übergabe.
Jede dieser Seite ist ca. folgend aufgebaut:
	
Der Fehler entsteht nun in der index.php
	
Jetzt wird der Content das erste mal direkt beim include der page.php ausgegeben, das 2. mal am richtigen ort: $Pars->add('content', $Pars->getContent());
Frage:
Wiso wird der Content schon beim include ausgegeben, wenn ich gar nirgens (ob klasse oder code) ein echo oder ein print hab?
					Ich habe mal bisschen OOP gelern und meiner 1. kleiner Parser geschrieben. Beim Testen hab ich jedoch ein Fehler Festgestellt.
Wie ihr hier sehen könnt:
http://andys-tools.ch/cms/admin/index.php?page=12
-> Der Error wird nach dem Header und vor dem body ausgegeben, wie ihr dem Quellcode entnehmen könnt.
Ich habe sehr lange gesucht woran das es liegt, biss ich jetzt eignedlich weiss was genau passiert aber nicht wiso, darum konnte ich den fehler aucxh noch nicht beheben.
PHP-Code:
	
	
class Parser
{
// ...
// Platzhalter zufügen
function add($ph, $es)
{
// Platzhalten zufügen
$this->arr[$ph] = $es;
}
// ...
// Content Parsen
    function tpl($tpl)
    {
        // tpl holen
        $tpl = file_get_contents($tpl);
        
        // prüfen ob normales add oder add_array
        if(count($this->arr) > 0) {
        // add -> arr
        
            // Platzhalter ersetzen
            foreach ($this->arr as $ph => $es)
            {
                // Platzhalter ersetzen
                $tpl = str_replace('{'.$ph.'}', $es, $tpl);
                
            }
        
        } elseif(count($this->while) > 0) {
        // add_array -> while
            
            // inhalt zwischen {while} und {/while} suchen
            $dat = split('{while}', $tpl); 
            $dat = split('{/while}', $dat[1]); 
            $dat[0] = $tpl;
            
            
            // Platzhalter ersetzen
            foreach ($this->while as $ph => $es)
            {
                // Platzhalter ersetzen
                $tpl = str_replace('{'.$ph.'}', $es, $tpl);
                
            }
        } else {
            // Platzhalter ersetzen
            foreach ($this->arr as $ph => $es)
            {
                // Platzhalter ersetzen
                $tpl = str_replace('{'.$ph.'}', $es, $tpl);
                
            }
        }
//..
// Content Template
    function getContent()
    {
        return $this->content;
    }
} 
Auf der Index.php parse ich nun das Hauptdesign.
da wird ist ein include, der die jeweilige seite includiert, je nach $_GET übergabe.
Jede dieser Seite ist ca. folgend aufgebaut:
PHP-Code:
	
	
// ...
$Pars->add('platzhalter1', $ph1);
$Pars->add('platzhalter2', $ph2);
$Pars->tpl('template.tpl')
//.. 
PHP-Code:
	
	
//prüfen ob $_get[page] übergeben wurde
    if(isset($_GET['page'])) {
        include('page.php');
        $Pars->add('content', $Pars->getContent());
        $Pars->setTitel('Admin Panel :: Startseite');
    } else {
        // content Startseite
        $Pars->add('content', 'Admin Panel Startseite');
        $Pars->setTitel('Admin Panel :: Startseite');
    }
    $Pars->tpl('../templates/admin/index_body.tpl'); 
Frage:
Wiso wird der Content schon beim include ausgegeben, wenn ich gar nirgens (ob klasse oder code) ein echo oder ein print hab?
          
 Moderator
							
						
							
						
Kommentar