yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Mini-Template Parser-Klasse



Als erstes kommt die Parse-Datei, hier braucht ihr nur den Config-Teil ändern.

parser.php:
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php

# Config: Start #

$lang_file 'language/lang_english.php'// Wie heißt die Sprachdatei?
$Start '{';
$Ende '}';

/**
* Mit $Start und $Ende werden die Contents gelesen. Beispiel:
*
* {inhalt}
*
* BEACHTE: Das Skript unterscheidet zwischen Groß- und Kleinschreibung (Case-Sensitive und Case-Insensitive), also ist
* {Inhalt} und {inhalt} nicht dasselbe
*
* Anstatt { und } kann auch [ und ] genutzt werden (Ist aber nicht so gängig :)).
*/

# Config: Ende #

class parser
{
    var 
$datei// Wird beim ausführen mitgesendet

         
function pub()
         {
             global 
$lang_file$Start$Ende// Diese Variablen kommen aus einem nichtglobalen Teil (also außerhalb einer Funktion) deshalb müssen sie 'eingebunden' werden.

             
$file $this->datei// Datei wird einer Variable zugewiesen
        
if(file_exists($file))
                 { 
// 1. Wenn die Datei vorhanden ist...
                     
if(file_exists($lang_file))
                         { 
// 2. Wenn die Sprachdatei vorhanden ist...
                             
require($lang_file); // 2. ... wird sie eingebunden
                                 
$Content implode(''file($file)); // 1. ... wird sie eingebunden und in eine Variable gepackt (für das spätere ersetzen)
                                 
foreach($index as $Temp => $KeyWord$Content ereg_replace($Start.$Temp.$Ende$KeyWord$Content); // Schwer zu erklären :) ist einfach so :D

                                 
echo $Content// Ausgabe
                         
}
                         else echo 
'Fehler: <b>'.$lang_file.'</b> nicht vorhanden.
Überprüfe die parser.php (Konfiguration)'
// Fehlermeldung 1
                 
}
                 else echo 
'Datei <b>'.$file.'</b> ist nicht vorhanden.
<i>Tipp:</i> Überprüfe die Datei, indem das Template erscheinen soll doch einmal.'
// Fehlermeldung 2
         
}
}

function 
ausgabe($dat)
{
    
// Diese Funktionen ist für die leichtere Ausgabe im Hauptscript
    
$parser = new parser// Neue Instanz der Klasse wird geöffnet
    
$parser->datei $dat// Jetzt wird die Datei zugewiesen (Die über die Funktion übertragen wird)
    
$parser->pub(); // Und hiefr ausgegeben
}

?>



Jetzt kommen wir zur Sprachdatei:
Nach meinem Beispiel erstellen wir einen Ordner Namens language.
Dort wird eine PHP-Datei erstellt namens lanugage_english.php (Kann natürlich im Konfigurationsteil geändert werden).
Der Inhalt könnte z.B. der hier sein:
PHP-Datei:
1
2
3
4
5
6
7
8
9
<?php
/**
* Bitte OHNE { und } schreiben!!!
*/

$index['content'] = 'Content!';
$index['title'] = 'The Pagetitle';
$index['link:a'] = '<a href="index.php?action=home">Linktext</a>';
?>


oder auf Deutsch:
PHP-Datei:
1
2
3
4
5
6
7
8
9
<?php
/**
* Bitte OHNE { und } schreiben!!!
*/

$index['content'] = 'Inhalt!';
$index['title'] = 'Der Seitentitel';
$index['link:a'] = '<a href="index.php?action=home">Linktext</a>';
?>



So jetzt kommen wir zur Template-Datei und zu der Datei, in der das Template ausgeführ werden soll:
Also z.B. im Hauptordner temp.php:
PHP-Datei:
1
2
3
4
5
6
7
<?php
require('parser.php'); // MUSS da stehen, damit die Templates verwertet werden können.

ausgabe('temp.htm'); // So wird die Datei ausgegeben (Einfach die HTM(L)-Datei eintragen).

// Für eine andere Datei einfach z.B. ausgabe('datei.endung'); schreiben (ohne echo).
?>


Nun kommt die Haupttemplate-Datei als HTML-Format:
Code:
<html>
<head>
<title>{title}</title>
</head>
<body>
{content}

{link:a}
</body>
</html>



Das war alles!

Ich hoffe ihr versteht es.
Bei Fragen im Forum per PN oder ICQ...

MfG, LLCoolDannY

Geschrieben von LLCoolDannY am 18.06.2004 (7994x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Hmm, wüsst ich net, wie es in etwa geht... ich würde es net verstehen :-/
Geschrieben von Phil Marx
kann mich da Phil nur anschließen ;)



Wenn man keine Ahnung von Klassen hat, kann man mit dem Parser nix anfangen ;(
Geschrieben von michi
Tja ist wirklich schwer zu erklären für Neulinge oder Einsteiger, aber gebrauche kann man es jawohl :)



MfG
Geschrieben von LLCoolDannY
Meiner Meinung nach alles viel zu kompliziert gemacht. Einfachheit ist höchstes Gebot in der Programmierung, und je einfacher etwas ist, umso besser ist es.

Man könnte zum Beispiel um die Platzhalter zu ersetzen auch einfach "str_replace(...)" benutzen.
Diese Funktion ist wesentlich einfacher und im Endeffekt leichter zu verstehen.
Geschrieben von Mathias
Also, ich weiss ja nich, ob noch jemand das liest, aber so schlecht ist es nicht und auch gar nicht kompliziert, wenn man mal von der schlechten codeformatierung absieht.
Vielleicht hätte ich das index Array auch nicht als Global Var definiert, aber sonst....
Naja und bitte erkläre mir mal den syntaktischen Unterschied zwischen ereg_replace und str_replace ..... also die sehen für mich ziemlich gleich aus. Das sie anders funktionieren ist schon klar, aber so wie sie hier gebraucht werden, funktionieren sie sogar gleich. ;-)

Also alles in allem durchaus brauchbar.

Gruß
HaPe
Geschrieben von Hans-Peter Schiefer
Also ich finde das Script sehr gut gelungen.
Geschrieben von weis net
Also Anfangs fand ich das ganze echt ne gute idee. auch wenn es vllt einfacher gehen würde. ABER und das ist ein echt fettes minus. Wenn man in template etwas included oder gar php code ausführt dann wird diese schlicht weg nich ausgeführt.

echt schade
Geschrieben von SteiniKeule