Autor |
Nachricht |
phpler
Threadersteller
Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 15.02.2007 01:35
Titel [php] Beratung PHP Template Engine |
|
|
Hallo erstmal!
Ich bin noch ziemlich neu auf dem PHP-Sektor und wollte mal wissen was Profis zu meiner Template-Klasse sagen. Wäre nett wenn ihr mir sagen könntet was ich noch verbessern bzw. anders machen könnte.
template.php
Code: | <?php
class Template
{
function readInFile($document)
{
if( ! file_exists($document) )
{
// Datei existiert nicht also Fehler.
return FALSE;
}
else
{
// Wir lesen die Datei in ein Array.
$doc = file($document);
return $doc;
}
}
function getBlocks( $file )
{
$doc = $this->readInFile( $file );
$row = 0;
foreach( $doc as $docLine )
{
if( preg_match_all("#<!--BEGIN (.*)-->#siU", $docLine, $line ) )
{
$zeiger[] = $line[1][0];
$blocks[$line[1][0]][start] = $row+1;
}
if( preg_match_all("#<!--END (.*)-->#siU", $docLine, $line ) )
{
$blocks[$line[1][0]][ende] = $row;
}
$row++;
}
foreach( $blocks as $key=>$value )
{
for($i=$value[start];$i<$value[ende];$i++)
{
// Entfernt die Block Definitionen
if( preg_match("/<!--.*?-->/", $doc[$i], $zombie ) )
{
// nichts passiert
}
else
{
$lines .= $doc[$i];
}
}
$blocks[$key][content] = $lines;
$lines = '';
}
return $blocks;
}
function getNestedBlocks( $file )
{
$doc = $this->readInFile( $file );
$row = 0;
foreach( $doc as $docLine )
{
if( preg_match_all("#<!--_BEGIN (.*)-->#siU", $docLine, $line ) )
{
$zeiger[] = $line[1][0];
$blocks[$line[1][0]][start] = $row+1;
}
if( preg_match_all("#<!--_END (.*)-->#siU", $docLine, $line ) )
{
$blocks[$line[1][0]][ende] = $row;
}
$row++;
}
foreach( $blocks as $key=>$value )
{
for($i=$value[start];$i<$value[ende];$i++)
{
$lines .= $doc[$i];
}
$blocks[$key][content] = $lines;
$lines = '';
}
return $blocks;
}
}
?>
|
Beispiel Templatedatei
Code: | <!--BEGIN TEST-->
Irgendwelcher Text hier
<!--_BEGIN EINGEBETTET-->
Text oder Tabelle für z.B. einen Loop
<!--_END EINGEBETTET-->
Noch mal Text, Bilder etc
<!--END TEST-->
<!--BEGIN TEST2-->
Irgendwelcher Text hier
<!--_BEGIN EINGEBETTET2-->
Text oder Tabelle für z.B. einen Loop
<!--_END EINGEBETTET2-->
Noch mal Text, Bilder etc
<!--END TEST2-->
|
Danke für eure Hilfe!
|
|
|
|
|
tacker
Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht:
|
|
|
|
|
Anzeige
|
|
|
phpler
Threadersteller
Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Do 15.02.2007 11:05
Titel
|
|
|
Danke erstmal für die Links. Ich habe mich noch nicht mit PEAR beschäftigt werde das aber mal zu gegebener Zeit in Angriff nehmen.
Prinzipiell hast du mit "das Rad neu erfinden" schon recht, jedoch finde ich das etwas "Eigenes" zum Anfang einen
mit Stolz erfüllt
man Zusammenhänge besser verstehen lernt ( )
Tipps für effektiveres Scripten erhalten kann
man frei ist von jeglichen Copyright Bestimmungen anderer
Gerade bei Punkt 3 fällt einem Neuling immer wieder auf, dass man es auch kürzer schreiben kann. Also wenn du mir irgendwelche Tipps zu meinem Code geben könntest wäre ich dir/euch sehr dankbar!
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Do 15.02.2007 21:54
Titel
|
|
|
Schreib lieber direkt nen ordentlichen Parser mit Start- und Endtoken, um auch beliebig tiefe Hierarchien abgreifen zu können. Also ich hab mich auch mal ne Weile damit beschäftigt, ist echt witzig damit rumzuexperimentieren.
Zuletzt bearbeitet von am Do 15.02.2007 21:56, insgesamt 1-mal bearbeitet
|
|
|
|
|
magicslider
Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht:
|
Verfasst Do 15.02.2007 23:51
Titel
|
|
|
smarty wäre noch als alternative zu nennen...
|
|
|
|
|
phpler
Threadersteller
Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 16.02.2007 00:43
Titel
|
|
|
Hallo XSchinkenX!
Du meinst so wie HTML-Befehle?
Code: | <Block>
<Unterblock_1>
Text blabla
<Unterblock_2>
Noch mehr Text etc.
</Unterblock_2>
</Unterblock_1>
</Block>
|
Oder verstehe ich dich jetzt falsch?
|
|
|
|
|
|
|
|
Ähnliche Themen |
Looking For PHP Template Engine
smarty template engine > installieren ...?
joomla template in ein html/css template konvertieren?
Corel X3 PDF Engine
Rewriting Engine - URL Forwarding
C++: Template in Template-Funktion nutzen
|
|