Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Hilfer bei eigenem tpl parser [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Hilfer bei eigenem tpl parser


 
eternitysoft
26-07-2005, 05:01 
 
Hallo hab mir mal nen eigenen tpl parser geschrieben (ist nicht gerade der beste aber sollte erstmal reichen) jetzt fehlt mir nurnoch eine sache wo ich momentan kein plan hab wie ich die einbauen soll und zwar möchte ich auch schleifen parsen können (für z.B News die aus der Db ausgelesen werden und mehrere angezeigt werden)

naja hier mal mein code


<?php
class tpl {

var $path;
var $contents;
var $content;
var $handle;

############ Für das Parsen von normalen dateien ##########################
function load ($template)
{
$pfad = "template/";
$end = ".tpl";

$this->path = $pfad.$template.$end;
$this->handle = @fopen($this->path,"r");
if (!$this->handle)
{
echo "Konnte Datei <font color=\"red\">($this->path)</font> nicht öffnen";
exit();
}
$this->contents = implode("",file($this->path));
fclose ($this->handle);
}

function replace($search,$replace)
{
$this->contents = str_replace("{\$".$search."}", $replace,$this->contents);
}

function get()
{
echo $this->contents;
}

}

############ Für das Parsen von db daten ##########################

function sql_load($table,$where)
{
$this->sql = "SELECT content from ".$table." where name ='".$where."'";
$this->sql_query =mysql_query($this->sql);
while($row = mysql_fetch_object($this->sql_query))
{
$this->content =$row->content;
}

}

function sql_replace ($search,$replace)
{
$this->content = str_replace("{\$".$search."}", $replace, $this->content);
}

function sql_get()
{
echo $this->content;
}
?>

 
onemorenerd
26-07-2005, 08:36 
 
1. Ist es Absicht, Dateien in $contents und DB-Inhalte in $content zu halten?

2. Warum ruft sql_replace() nicht einfach replace() auf? Analog sql_get() und get() - da sehe ich nämlich auch keinen Unterschied.

3. Wie sehen Schleifen in deinen Templates aus? Wenn du dir das überlegt hast (woher etwa die Laufvariable kommt etc.), kommst du wahrscheinlich selbst drauf.
Oder schau einfach wie andere Templateklassen das machen.

 
eternitysoft
26-07-2005, 13:32 
 
Original geschrieben von onemorenerd
1. Ist es Absicht, Dateien in $contents und DB-Inhalte in $content zu halten?

2. Warum ruft sql_replace() nicht einfach replace() auf? Analog sql_get() und get() - da sehe ich nämlich auch keinen Unterschied.

3. Wie sehen Schleifen in deinen Templates aus? Wenn du dir das überlegt hast (woher etwa die Laufvariable kommt etc.), kommst du wahrscheinlich selbst drauf.
Oder schau einfach wie andere Templateklassen das machen.

werde ich noch umändern das es abgefragt wird war bloß auf die schnelle erstmal so geschrieben werde es mir mal angucken und mich hiernochmal melden
mfg
et

 
TobiaZ
26-07-2005, 13:45 
 
Haben diverse Threads zu diversen engines. Guck doch mal da rein. Vielleicht kannst du die Schleifenmodelle ja auf dein System transportieren.

 
schmalle
26-07-2005, 14:03 
 
Warum benutzt man fopen, wenn man das File eh mit file() einliest? Und warum nicht file_get_contents()?

 
Quetschi
26-07-2005, 14:33 
 
Hab mir das selber bei anderen Template-engines noch gar ned angesehen. Selber verwende ich HTML-Kommentare zum definieren von Loops im Template, die lassen sich problemlos im HTML-Code an beliebiger Stelle integrieren und vertragen sich IMHO mit jedem HTML-Editor.

Dann einfach mit explode() am Kommentar exploden und den mittleren Teil inkrementiel mit den DB-Ergebnisen ersetzen und zum Schluss alles raushauen.

Bestimmt nicht ne profimäßige vorgehensweise wie die bekannten Template-engines (das was ich da mache hat den Namen Template-engine wahrscheinlich gar ned verdient), kommt aber mit weniger als 50 Zeilen Code aus, reicht mir in 95% der Fälle vollkommen aus und die Geschwindigkeit ist soweit ich es beurteilen kann hervorragend.

Gruss
Quetschi

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:28 Uhr.