[PHP] Eigen template engine..

Pagina: 1 2 Laatste
Acties:
  • 263 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb al een paar dagen in mijn hoofd om mijn eigen mini template engine te schrijven, dit omdat ik graag een guestbook wil maken die ik zo qua layout kan aanpassen zodat andere mensen er ook gebruik van kunnen maken

Nu heb ik het idee om het als volgt te doen...

mijn template ziet er als volgt uit
code:
1
2
3
4
5
6
7
<html>
<head>
<title>%title%</title>
<body background="%background%">
<p>Hallo dit is een test......%text%</p>
</body>
</html>

* template volledig uitlezen in een string bv $template
* een array gebruiken voor de te veranderen woorden dus van bv %title% naar "dit is mijn titel" en dit eerst in een soortement array dat ik gewoon kan adden met een functie bv addTemplateWord($template, "%title", "De vervangen regel"); oftewel de array ziet er dan zo uit --> %title% => "De vervangen regel"
* En dan als laatste functie een parseTemplate waarmee ik de template kan ombouwen en kan laten zien in bv 1x..

Help... welke php commando's kan ik het beste gebruiken..

Ik heb zelf al array een beetje uitgesplit maar dat wil niet echt werken... en kan jammer genoeg geen goede info vinden..

ben net tot deze code gekomen, mja dat is natuurlijk nog lange niet alles dat ik moet hebben!..
PHP:
1
<?function loadTemplate($name, $file) {    // load Template file....    $template = fopen($file,"r");    $size = filesize($template);        $name[template] = fgets($template, $size);    return $name;}function parseTemplate($name) {    return $name;}function parseRecord($name, $keyword, $replace) {    for ($i = 0; $i <= count($name[words]); $i++) {         if ($name[keyword][$i] == $keyword) {             if ($name[replace][$i] != $replace) {                 $name[replace][$i] = $replace);                 $add = true;                 break;             }else{                 $add = true;                 break;         }    }    if ($add != true) {        $total = count($name[keyword]) +1;        $name[keyword][$total] = $keyword);        $name[replace][$total] = $replace);    }}?>

zo je wel kan zien een beginnetje :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 04 april 2002 19:29 schreef xtentic het volgende:
Help... welke php commando's kan ik het beste gebruiken..
Je komt zover, en dan kan je str_replace niet vinden?
Die werkt overigens ook met arrays.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op donderdag 04 april 2002 19:42 schreef ACM het volgende:
Je komt zover, en dan kan je str_replace niet vinden?
Die werkt overigens ook met arrays.
Nee ik wil weten met welk commando voor arrays je een key/value kan adden?... en str_replace ken ik zekers wel maar zover was ik nog niet gekomen :D

Acties:
  • 0 Henk 'm!

  • ChiLLeR
  • Registratie: Januari 2000
  • Laatst online: 16:54
http://nl.php.net/manual/en/ref.array.php

Daar moet het grootste gedeelte wel te vinden zijn denk ik...

>> Signature?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op donderdag 04 april 2002 19:54 schreef ChiLLeR het volgende:
http://nl.php.net/manual/en/ref.array.php

Daar moet het grootste gedeelte wel te vinden zijn denk ik...
Ja deze pagina heb ik al vaak bekeken, maar kan niet zo vinden welk commando nou gebruikt moet worden om een key & value te adden :(... mischien kijk ik er wel over heen maar vind nix met add :'(

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op donderdag 04 april 2002 19:58 schreef xtentic het volgende:
Ja deze pagina heb ik al vaak bekeken, maar kan niet zo vinden welk commando nou gebruikt moet worden om een key & value te adden :(... mischien kijk ik er wel over heen maar vind nix met add :'(
Da's het nare van array's. Je kan niet zomaar iets middenin stoppen zonder alles wat eronder zit naar benee te schuiven. Tenminste ik neem aan dat je dit bedoelt met 'add' aangezien je vast wel weet hoe een waarde in bijv bla[0] te proppen.

Dit zou je kunnen ondervangen door bijv met een Linked list te werken.

Echter waarom moeilijk doen? Je moet toch %title% vervangen door bijv "Bla titel!". Wat is er dan mis met str_replace( "%title%", $titel, $array[veldmetdezinerin] );

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

$array[count($array)] = "nieuw";

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
daar is niets mis mee, maar ik zelf gebruik arrays nu om landen in bv een selectbox te zetten maar zou graag bv een item willen adden aan een array dat maakt het scripten nogal gemakkelijk als ik meerdere layouts wil gebruiken en me script ook wil gaan gebruiken voor andere dingen zodat ik dus alleen maar een functie hoef te schrijven die gewoon een key en value aan een 'array' add...

en steeds een str_replace gebruiken is op zich zelf niets mis mee maar niet als je een script wil maken voor meerdere layouts met meerdere key's die veranderd moeten worden..

tis leuker om een klein scriptje te schrijven dan 100x str_replace te gebruiken :)

Acties:
  • 0 Henk 'm!

  • ChiLLeR
  • Registratie: Januari 2000
  • Laatst online: 16:54
PHP:
1
<?$array[] = $value;/* Is dus het zelfde als */array_push($array, $var);?>

En als je dus assiociatieve arrays wilt gebruiken zoals jij:
PHP:
1
<?$array[$keyName] = $value;?>

>> Signature?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ken deze methode..

$array = array("key" => "blaat", "teset" => "Wheheh");

dat princiepe wil ik weer gebruiken want dat is leuk en gemakkelijk, maar hoe kan ik nu gewoon een "key" en "value" adden?... niet met push *D

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Timpie: $array[count($array)] = "nieuw";


dit doe je met
code:
1
$array[] = 'nieuw';

en niet anders :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op donderdag 04 april 2002 20:21 schreef Grum het volgende:
Timpie: $array[count($array)] = "nieuw";


dit doe je met
code:
1
$array[] = 'nieuw';

en niet anders :)
:P

maar hoe kan ik een variable naam aan een 'key' geven?

$array['$naam'] = $blaat?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 04 april 2002 20:32 schreef xtentic het volgende:
$array['$naam'] = $blaat?
En heb je het al geprobeerd?

Antwoord is dus ja.

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

Op donderdag 04 april 2002 20:21 schreef Grum het volgende:
Timpie: $array[count($array)] = "nieuw";


dit doe je met
code:
1
$array[] = 'nieuw';

en niet anders :)
Nu je het zegt :)
Heb al een tijdje niks meer met PHP gedaan :{

$array[$key] = $value
maar dan kan je geen dubbele keys invoeren, weet niet of dat zo'n bezwaar is

anders kan je
$array[$i][0] = $key
$array[$i][1] = $value
gebruiken, of iets in die richting iig :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op donderdag 04 april 2002 20:35 schreef ACM het volgende:

[..]

En heb je het al geprobeerd?

Antwoord is dus ja.
Dankje ACMetje

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
<?function loadTemplate($file) {    // load Template file....    $template = fopen($file, "r");    $fsize = filesize($file);        $name[template] = fgets($template, $fsize);    return $name;}function parseTemplate($name) {    foreach ($name as $key => $value) {        echo "$key => $value<br>";        // replace $key als $value;            }    return $name;}function parseRecord($name, $keyword, $replace) {    if ($name['$keyword'] == $replace) {        break;    }else{        $name['$keyword'] = $replace;    }    return $name;}$template = loadTemplate("template.html");parseRecord($template, "%title%", "Dit moet veranderen");parseRecord($template, "%titlxe%", "Dit moet veranderen");parseRecord($template, "%txitle%", "Dit moet veranderen");parseRecord($template, "%txitle%", "Dit moet veranderen");parseTemplate($template);?>

hij add die %dingetjes niet :( why why why?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
error's met grums errornogwattus(E_ALL);
code:
1
2
3
4
5
6
7
8
9
Warning: Use of undefined constant template - assumed 'template' in e:\php\template\parser.php on line 9

Warning: Undefined index: $keyword in e:\php\template\parser.php on line 26

Warning: Undefined index: $keyword in e:\php\template\parser.php on line 26

Warning: Undefined index: $keyword in e:\php\template\parser.php on line 26

Warning: Undefined index: $keyword in e:\php\template\parser.php on line 26

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
ACM:
xtentic: $array['$naam'] = $blaat?

En heb je het al geprobeerd?

Antwoord is dus ja.


En het antwoord is NEE .. want er staan quotes .. single quotes nog wel :D

[edit]
TOPIX IS BRAK! :9
hij snapt dit niet:[quote]
<b>ACM:</b> <i><quote>
<b>xtentic:</b> <i>$array['$naam'] = $blaat?</i>
</quote>
En heb je het al geprobeerd?

Antwoord is dus ja.
</i>
[/quote]

[/edit]


Timpie:
$array[$i][0] = $key
$array[$i][1] = $value


en dat doe je dan dus gewoon met
code:
1
$array[$key][] = $value;

:P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt! *D
PHP:
1
<?error_reporting(E_ALL);function loadTemplate($file) {    // load Template file....    $tmpTemplate = fopen($file, "r");    $tmpName['template'] = fread($tmpTemplate, filesize($file));    fclose($tmpTemplate);        return $tmpName;}function parseTemplate($name) {    // Parse the template..    $tmpString = $name['template'];    foreach ($name as $key => $value) {        if ($key != "template") {            $tmpString = eregi_replace($key, $value, $tmpString);        }    }    return $tmpString;}function parseRecord(&amp;$kwHash, $inKeyword, $inReplace) {    // record a item    if (!isset($kwHash[$inKeyword])) {        $kwHash[$inKeyword] = $inReplace;    }}$template = loadTemplate("temp.html");parseRecord($template, "%newsgroup%", "General news");parseRecord($template, "%titel%", "Dit is mijn news titel");parseRecord($template, "%text%", "Hier staat<br>mijn<p>text</p><strong>en it rulez</strong>");parseRecord($template, "%link%", "news.php?id=1");parseRecord($template, "%username%", "Xtentic");parseRecord($template, "%datum%", "Vrijdag 30 September 2002");echo parseTemplate($template);?>

maar zit me nu te bedenken wat ik er nog meer in kan versleutelen zodat ie nog beter is oftewel handiger om te gebruiken :)

Acties:
  • 0 Henk 'm!

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 16-08 06:44

CyberSnooP

^^^^ schrijft --->

Wat ik persoonlijk veel gebruik is een vorm van loopjes in je template die je vanuit je PHP kunt laten herhalen of doormiddel van een array automatisch laat herhalen.

Maar waarom wil je graag je eigen Template engine bouwen?
• Denk je het beter te kunnen dan de rest (beter dan bijv Smarty)
• Of vind je het gewoon een uitdaging om uit te pluizen hoe het werkt?

|_____vakje______|


Acties:
  • 0 Henk 'm!

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01 11:31
Op donderdag 04 april 2002 22:12 schreef CyberSnooP het volgende:
Wat ik persoonlijk veel gebruik is een vorm van loopjes in je template die je vanuit je PHP kunt laten herhalen of doormiddel van een array automatisch laat herhalen.

Maar waarom wil je graag je eigen Template engine bouwen?
• Denk je het beter te kunnen dan de rest (beter dan bijv Smarty)
• Of vind je het gewoon een uitdaging om uit te pluizen hoe het werkt?
smarty is wel goed, maar ik vind hem niet echt lekker werken..

het idee is wel perfect.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Waarom?... omdat ik me eigencode wil gebruiken in/voor me eigen projectjes en omdat ik zo meer leer van programmeren... (scripten) hehe... maar iemand nog ideetjes :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ga er nog wat anders in zetten :P

<ifset="%text%"><htmlshitbladediebla</ifset>

en dan alles checken tussen de ifset removen wanneer %text% niet bestaat (oftewel niet includen)

welke preg_replace moet ik hier voor maken? want daar ben ik niet zo goed in :D

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
met de eval-modifier van preg_replace moet dat wel lukken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op donderdag 04 april 2002 23:34 schreef marcusk het volgende:
met de eval-modifier van preg_replace moet dat wel lukken.
Hoe bedoel je dit?... zou je dit kunnen onderbouwen?

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 15:30
De beste template engine blijft XSLT :7

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
not :) (NU iig nog niet)

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op vrijdag 05 april 2002 07:27 schreef xtentic het volgende:
Hoe bedoel je dit?... zou je dit kunnen onderbouwen?
Met de eval-modifier (/e) kun je een functie uitvoeren op de gematchde tekst. In de php manual staat dit voorbeeld:
code:
1
2
3
4
// This would capitalize all HTML tags in the input text.
preg_replace ("/(<\/?)(\w+)([^>]*>)/e", 
          "'\\1'.strtoupper('\\2').'\\3'", 
          $html_body);

Je kunt dus de gematchde %tekst% en <htmlshitbladiebla> doorgeven aan een functie die <htmlshitbladiebla> terug geeft als %tekst% bestaat, anders een lege string.

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 15:30
Op vrijdag 05 april 2002 10:18 schreef Grum het volgende:
not :) (NU iig nog niet)
Leg uit :?

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
stond dat niet al ergens in je icq logs ?

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 15:30
Op vrijdag 05 april 2002 11:24 schreef Grum het volgende:
stond dat niet al ergens in je icq logs ?
Whehehe :D
maar geloof ut niet nee :o :P

Acties:
  • 0 Henk 'm!

Verwijderd

Ook ik ben wel benieuwd naar enige argumentatie naar dit standpunt mbt xslt :)

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 15:30
Een voordeel is dat het in een aantal gevallen client-side kan worden geparsed.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

[search=template vs xslt]

:O :Z

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 05 april 2002 13:40 schreef ddc het volgende:
Een voordeel is dat het in een aantal gevallen client-side kan worden geparsed.
Ja, en nu het voordeel :?

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Ik paste vanavond wel ff me lijstje 'anti'-puntjes

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 05 april 2002 14:56 schreef Nielsz het volgende:

[..]

Ja, en nu het voordeel :?
Voordeel:
- Minder data verkeer. (zeker al werk je in combinatie met RPC of SOAP)
- XSL kan je laten door browser laten cashen dus de volgende keer dat de bezoeker komt hoef je alleen maar de data op te sturen ( de XML).
- Je gebruikt meer resources van de client en dus minder resources van de server voor transformatie.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 05 april 2002 15:10 schreef LuCarD het volgende:

[..]

Voordeel:
- Minder data verkeer. (zeker al werk je in combinatie met RPC of SOAP)
- XSL kan je laten door browser laten cashen dus de volgende keer dat de bezoeker komt hoef je alleen maar de data op te sturen ( de XML).
- Je gebruikt meer resources van de client en dus minder resources van de server voor transformatie.
Dat is allemaal zo, maar als je een brakke browser gebruikt, gaat het niet goed :?

Acties:
  • 0 Henk 'm!

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 30-07 08:33
Op vrijdag 05 april 2002 15:17 schreef Nielsz het volgende:

[..]

Dat is allemaal zo, maar als je een brakke browser gebruikt, gaat het niet goed :?
Klopt :)

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 05 april 2002 15:17 schreef Nielsz het volgende:

[..]

Dat is allemaal zo, maar als je een brakke browser gebruikt, gaat het niet goed :?
Das een nadeel en daar vroeg je niet naar... >:)

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 05 april 2002 15:21 schreef LuCarD het volgende:

[..]

Das een nadeel en daar vroeg je niet naar... >:)
wijs-neus :P
'vroeger' kon het alleen foutgaan met HTML. Dat was de enige stap waardoor er verschillen konden zijn.
Nu komt daar weer een stap bij, XSLT. Nu zijn er dus 2 stappen waar het fout kan gaan. Lijkt me geen optimale situatie.

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Noem eens een paar browsers die 95%+ compliant zijn met xml/xslt aub, dat zijn volgens mij namelijk niet alle bekende browsers.

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 05 april 2002 15:39 schreef Grum het volgende:
Noem eens een paar browsers die 95%+ compliant zijn met xml/xslt aub, dat zijn volgens mij namelijk niet alle bekende browsers.
Denk geen een....

Maar dat was met HTML in het begin ook niet....

Komt wel.. en dat is een van de grootste voordelen van XSL. Het gaat zometeen net zo uitgebreid worden ondersteund als HTML.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Ik zie op dit moment voornamelijk nadelen en dus niet echt een reden om er uberhaubt iets mee te doen.

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Het gebruik als stylesheets voor HTML pagina's is bij lange na niet de interessantste of meest logische toepassing van XSLT, zeker niet client-side.

Maar dit doet natuurlijk niets af aan de waarde van XSLT in het algemeen :)

Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 05 april 2002 16:58 schreef tomato het volgende:
Het gebruik als stylesheets voor HTML pagina's is bij lange na niet de interessantste of meest logische toepassing van XSLT, zeker niet client-side.

Maar dit doet natuurlijk niets af aan de waarde van XSLT in het algemeen :)
Maar wat is dan wel een interessantse toepassing, want veel meer dan voor html kan ik er niet voor bedenken :X :)

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 05 april 2002 17:06 schreef Nielsz het volgende:

[..]

Maar wat is dan wel een interessantse toepassing, want veel meer dan voor html kan ik er niet voor bedenken :X :)
XSLT is een transformatie taal van XML data naar een andere vorm. Je kan met gemak transformeren naar HTML (duh :) ), XML, CSV, PLAIN TEXT, WAP(?), PRINTER, speciaal formaat voor blinden...

En volgens mij zijn er geen beperkingen waar je naar toe kan transformeren....

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op vrijdag 05 april 2002 17:10 schreef LuCarD het volgende:

[..]

XSLT is een transformatie taal van XML data naar een andere vorm. Je kan met gemak transformeren naar HTML (duh :) ), XML, CSV, PLAIN TEXT, WAP(?), PRINTER, speciaal formaat voor blinden...

En volgens mij zijn er geen beperkingen waar je naar toe kan transformeren....
Best gek, want na deze text van jou snap ik het ineens een stuk beter :Y)
en ik ben nog serieus ook |:( :)

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 05 april 2002 17:15 schreef Nielsz het volgende:

[..]

Best gek, want na deze text van jou snap ik het ineens een stuk beter :Y)
en ik ben nog serieus ook |:( :)
Hmmm dat is best gek ja.....

;)

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Misschien dat je hier trouwens nog wat aan hebt:
PHP:
1
<?function ParseText($text, $arr){    if(is_array($arr)){      $arr_keys=array_keys($arr);      while(count($arr)){        $itm=array_pop($arr);        $key=array_pop($arr_keys);        $text=str_replace("%" . $key . "%", $itm, $text);      }    }    return $text;  }?>

Gebruik:
PHP:
1
<?$tekst="<html><head><title>%title%</title></head><body>%bodytext%</body></html>";$array=array(  "title"=>"Mijn site",  "bodytext"=>"<h1>Hoi Wereld</h1>");ParseText($tekst, $array);?>

De uitpoep kan je zelf wel raden....

Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

Op donderdag 04 april 2002 21:12 schreef Grum het volgende:
[/edit][/sup]

Timpie:
$array[$i][0] = $key
$array[$i][1] = $value


en dat doe je dan dus gewoon met
code:
1
$array[$key][] = $value;

:P
Dat lijkt me opzich dus niet zo handig, wat als je dan een waarde wilt overschrijven? Gaat het opeens fout :)

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Op vrijdag 05 april 2002 16:58 schreef tomato het volgende:
Het gebruik als stylesheets voor HTML pagina's is bij lange na niet de interessantste of meest logische toepassing van XSLT, zeker niet client-side.
Waarom vooral niet client-side?

Rustacean


Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Manuzhai: Waarom vooral niet client-side?
Misschien was het laatste deel van de zin een beetje krom. Ik bedoelde iig dat je HTML stylesheets als interessante toepassing van XSLT niet client-side moet zoeken.
In ieder geval niet nu. Of je moet een beperkte doelgroep hebben of eisen kunnen stellen aan de doelgroep van je applicatie. Wanneer je bijvoorbeeld Mozilla 0.9.7+ of Internet Explorer 6 kunt eisen wordt client-side processing wel degelijk interessant.
Maar dan nog zal server-side gebruik van XSLT in de vorm van HTML stylesheets interessant blijven, er kunnen bijvoorbeeld meerdere stappen in het proces zijn waarvan enkele wel server-side moeten (denk bijvoorbeeld aan security etc).


Maar wat ik vooral met mijn post bedoelde: XSLT heeft zoveel meer toepassingen dan als HTML template engine.

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Op vrijdag 05 april 2002 18:52 schreef tomato het volgende:
Misschien was het laatste deel van de zin een beetje krom. Ik bedoelde iig dat je HTML stylesheets als interessante toepassing van XSLT niet client-side moet zoeken.
In ieder geval niet nu. Of je moet een beperkte doelgroep hebben of eisen kunnen stellen aan de doelgroep van je applicatie. Wanneer je bijvoorbeeld Mozilla 0.9.7+ of Internet Explorer 6 kunt eisen wordt client-side processing wel degelijk interessant.
Maar dan nog zal server-side gebruik van XSLT in de vorm van HTML stylesheets interessant blijven, er kunnen bijvoorbeeld meerdere stappen in het proces zijn waarvan enkele wel server-side moeten (denk bijvoorbeeld aan security etc).
Je kan performance-wise mensen met Moz of IE de XSLT zelf laten doen, en de rest server-transformed shit geven. :) Nu heeft dat misschien nog niet veel zin, maar dat komt nog wel. En als je een doelgroep hebt die redelijk up2date is (techies) betekent dat dat je minder zelf hoeft te transformeren.

Rustacean


Acties:
  • 0 Henk 'm!

Verwijderd

Als iemand nog interesse heeft ik heb zelf ook al een template engine geschreven, werkt prima.

ik heb een paar speciale keys gemaakt die door de template engine zelf vervangen worden. Een hiervan is taalafhankelijke keys erg handig als je een site in 2 talen wilt maken.
Verder kun je ook 1 hele file met een key includen en nog wat andere handige shit... Als er interesse is mail dan ff. Aan de documentatie wordt gewerkt (anders ben ik zelf ook zo weer vergeten hoe ie werkt ;) )

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Post ut maar, dit is natuurlijk een leuk topic om iedereen samen te laten werken :)

En heeft iemand ook een oplossing voor mijn probleem? grin... want zag/las meer dingen over template engines in het algemeen (XLT ofzo :?)

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op vrijdag 05 april 2002 18:04 schreef Timpie het volgende:

Dat lijkt me opzich dus niet zo handig, wat als je dan een waarde wilt overschrijven? Gaat het opeens fout :)
je zei eerder:

maar dan kan je geen dubbele keys invoeren


Je mist de hele context nu dus :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op vrijdag 05 april 2002 10:55 schreef marcusk het volgende:

[..]

Met de eval-modifier (/e) kun je een functie uitvoeren op de gematchde tekst. In de php manual staat dit voorbeeld:
code:
1
2
3
4
// This would capitalize all HTML tags in the input text.
preg_replace ("/(<\/?)(\w+)([^>]*>)/e", 
          "'\\1'.strtoupper('\\2').'\\3'", 
          $html_body);

Je kunt dus de gematchde %tekst% en <htmlshitbladiebla> doorgeven aan een functie die <htmlshitbladiebla> terug geeft als %tekst% bestaat, anders een lege string.
sorry maar dit vat ik niet, het lijkt allemaal zo gemakkelijk maar de /(\/?) etc code is voor mij :? :? :? :D

Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op vrijdag 05 april 2002 21:03 schreef xtentic het volgende:

[..]

sorry maar dit vat ik niet, het lijkt allemaal zo gemakkelijk maar de /(\/?) etc code is voor mij :? :? :? :D
Gewoon stukje voor stukje lezen dan valt het wel mee:
code:
1
2
3
(<\/?) - probeer de < te matchen met daarachter optioneel(=?) een / teken, de \ is om de / te escapen, anders zou dit het einde van de regex betekenen.
(\w+) - pak 1 woord en stop dit in een groep. \w staat voor een alpha-numeriek karakter, de + betekent dat er een of meer direct achter elkaar moeten staan.
([^>]*>) - stop nu alle tekens in de 3e groep behalve het '>' teken, dit is immers het einde van de tag, het sterretje betekent 'zoveel mogelijk'. Hier komen dus de parameters van een tag in te staan

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op vrijdag 05 april 2002 21:11 schreef Orphix het volgende:

[..]

Gewoon stukje voor stukje lezen dan valt het wel mee:
code:
1
2
3
4
5
6
7
(<\/?) - probeer de < te matchen met daarachter optioneel(=?) een / teken, 
de \ is om de / te escapen, anders zou dit het einde van de regex betekenen.
(\w+) - pak 1 woord en stop dit in een groep. \w staat voor een alpha-numeriek karakter, 
de + betekent dat er een of meer direct achter elkaar moeten staan.
([^>]*>) - stop nu alle tekens in de 3e groep behalve het '>' teken, dit is immers het einde van de tag, 
het sterretje betekent 'zoveel mogelijk'. 
Hier komen dus de parameters van een tag in te staan
ik snap nu de (<\/?) nu denk ik wel... dat zou dan in mijn geval

([ifset=\"w+\"](.*)([/ifset])) moeten worden? :D

voor het uitlezen van [ifset="[b]%text%[/b]"]detextenzo[/ifset]

dus wanneer ik in mijn template parser de %text% heb gedefinieerd wil ik dat [ifset="%text%"] & [/ifset] weg gehaald worden, zoniet moet alles weg gehaald worden :) (i.v.m de output)

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op vrijdag 05 april 2002 21:19 schreef xtentic het volgende:
dat zou dan in mijn geval
([ifset=\"w+\"](.*)([/ifset])) moeten worden? :D
als je [ gebruikt ipv < moet je dat natuurlijk escapen. verder wil je w+ capturen (tussen haakjes zetten) en [/ifset] en de gehele regex niet (dus de buitenste haakjes moeten ook weg), aangezien je die captures niet nodig hebt.
dus wanneer ik in mijn template parser de %text% heb gedefinieerd wil ik dat [ifset="%text%"] & [/ifset] weg gehaald worden, zoniet moet alles weg gehaald worden :) (i.v.m de output)
om precies te zijn: als %tekst% gedefinieerd is moet je de boel vervangen door detekstenzo, anders vervangen door niets :)

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Nog wat ideetjes voor jullie uit mijn template engine *D :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
* Database driven
* Webbased template editor
* Variabele substitutie:
  - {VarName}
  - {HashName.Key} voor arrays
* Conditional statements:
  - {{VarName}?Var is true:Var is niet true}
  - {{VarName}=34?Gelijk aan 34:Niet gelijk aan 34}
  - {{VarName}={OtherVarName}?Gelijk:Niet gelijk}
* Datum en tijd opmaak:
  - {time,{},} Huidige tijd in standaard opmaak
  - {time,{TijdVar},} Tijd in standaard opmaak
  - {time,{TijdVar},H:i, d-m-Y} Tijd in opgegeven opmaak
* Alle taalconstructies kunnen genest worden
* Runtime caching
* Debug mode
* Sneller dan alle bij mij bekende PHP template engines

Todo:
* Template cooker om templates om te zetten in native PHP
* Documentatie :D
* Uitgebreidere foutmelding bij syntax errors in template

Eigenlijk is het nog steeds een Quick Hack (tm) by tomato, maar voor mezelf is ie al geruime tijd zeer bruikbaar. Huidige versie is 0.91.

Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op zondag 22 Maart 1998 19:52 schreef Orphix het volgende:
Mijn template engine heb ik vrij generiek opgezet. Het kan elke gestructureerde data dat van XML is afgeleid zeg maar 'transformeren' naar een andere data formaat en daarbij de data muteren. En ja ik heb er ook loopjes in zitten, templatematching, node-pattern-matching en the usual..ach het werkt voor mij dus waarom niet he, misschien dat ik het ooit nog eens ga uitwerken en publiceren :Y) :)
:X ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Op vrijdag 05 april 2002 22:54 schreef tomato het volgende:
Nog wat ideetjes voor jullie uit mijn template engine *D :
code:
1
2
3
4
5
* Database driven
* Conditional statements:
  - {{VarName}?Var is true:Var is niet true}
  - {{VarName}=34?Gelijk aan 34:Niet gelijk aan 34}
  - {{VarName}={OtherVarName}?Gelijk:Niet gelijk}
Nu, dat vind ik persoonlijk de 2 handigste opties eruit :)

EDIT: :) :o

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
DiEana: Nu, dat vind ik persoonlijk de 2 handigste opties eruit :)


Je noemt er anders 3 :X

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op zaterdag 06 april 2002 10:02 schreef Grum het volgende:
DiEana: Nu, dat vind ik persoonlijk de 2 handigste opties eruit :)


Je noemt er anders 3 :X
als je ut zo bekijkt heeft ie er 5 :+ (of 4? :D)

Acties:
  • 0 Henk 'm!

Verwijderd

:)

Die condities moet ik ook dringend maken in mijn template systeempje, want ik word er zo moe van als ik steeds een nieuwe templatefile moet aanmaken, voor maar 1 kleine verandering :\

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 15:30
Ok Tomato, je hebt me overtuigd. Waar kan ik je template engine downloaden ? :+

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op zaterdag 06 april 2002 10:06 schreef DiEana het volgende:
:)

Die condities moet ik ook dringend maken in mijn template systeempje, want ik word er zo moe van als ik steeds een nieuwe templatefile moet aanmaken, voor maar 1 kleine verandering :\
daarom add ik er nu ook een [ifset="%bladediebla%"]regel[/ifset] in :)... en nu ik die andere dingen zie is [ifkey="%test%"=="32"]bladediebla[/ifkey] ook wel handig...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu de [ifset="%nogwat%]werkend[/ifset] en wil ook nog een [optionname="%bla%"] er in verwerken... teminste lijkt me handig, heeft iemand nog meer goede ideeen?... gewoon dingen die ik simpel kan adden? ;)

Tnx

Acties:
  • 0 Henk 'm!

Verwijderd

wat wil je met option ?? maybe kan je je sourse, want ik wil wel es zien wat je er van gebrouwd heb

Acties:
  • 0 Henk 'm!

Verwijderd

ik heb ook probleempje bij mijn template parser

ik wil deze tag maken:

[BLOCK content]content hier[/END content]

Hij moet dan "content hier" in een array genaamd $block plaatsen.

$block["content"] = "content hier";

Ik krijg dit niet voor elkaar met preg_replace
ik heb dit:
PHP:
1
<?    function saveblock ($name, $data)    {        $this->block["$name"][1] = $data;        return "[BLOCK $name]";// Geef [BLOCK $name] terug, omdat deze later weer overschreven word.    }preg_replace("/\[BLOCK (.*)\](.*|\n)\\[\/END (.*)\]/ise", "$this->saveblock('\\1','\\2')", $this->data["$name"][1]);// $this->data["$name"][1] daar zit de hele template in.?>

Alleen werkt die preg_replace nie.. ik zou ook graag willen dat je meerdere blocks in elkaar kon doen

[block content]
[block tabel]
blaat
[/end tabel]
[/end content]

iemand een idee?

Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
ik ben ook maar eens begonnen 8-)

Acties:
  • 0 Henk 'm!

Verwijderd

Het wordt hier bijna een template orgie :)

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Stoel: iemand een idee?


Stackbased parser maken, dit kan per definitie beter NIET met regexps.

Acties:
  • 0 Henk 'm!

Verwijderd

Op zaterdag 06 april 2002 15:30 schreef Grum het volgende:
Stoel: iemand een idee?


Stackbased parser maken, dit kan per definitie beter NIET met regexps.
Uhh, stackbased :? :? ?

Acties:
  • 0 Henk 'm!

Verwijderd

Grum: Stackbased parser maken, dit kan per definitie beter NIET met regexps.
Waarom? >:)

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Arien: Waarom? >:)
nested - a whatis definition:
nested

In general, something that is nested is fully contained within something else of the same kind. In programming, nested describes code that performs a particular function and that is contained within code that performs a broader function. One well-known example is the procedure known as the nested do-loop. In data structures, data organizations that are separately identifiable but also part of a larger data organization are said to be nested within the larger organization. A table within a table is a nested table. A list within a list is a nested list.

You'd rather not parse nested structures with a regular expression. Use a stack-based parser instead.

A common alternative to nested is the prefix sub, as in subprocedure, substructure, subtransaction, and so forth.
Because the definition says so :P

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Tomato: :* (zoals ook nog steeds .. ghehe .. in me sig staat :D)

Acties:
  • 0 Henk 'm!

Verwijderd

tomato: nested - a whatis definition: Because the definition says so :P
Recursieve regex. >:)

:P

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Well .. what are you waiting for ... show of your skilllzzz. :+

Acties:
  • 0 Henk 'm!

Verwijderd

Grum: Well .. what are you waiting for ... show of your skilllzzz. :+
Waarom zou ik een template eninge moeten hebbeb? Ik maak toch geen forum ofzo? >:)

En met regexen parsen: zie eerste reply van [topic=452595]. :) (De stack enzo mag je erbij denken. :+)

(Waarom niet templates via XSLT vertalen? Hallo Martin! :+)

Acties:
  • 0 Henk 'm!

Verwijderd

wat is stackbased :?

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Stackbased is een term die je op google.com kan invullen en dan enorme bergen info over terug krijgt.

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
Stoel: wat is stackbased :?
Een stack is een LIFO collectie. LIFO staat voor 'Last In First Out'.

Een andere vorm van collecties is een FIFO stucture (First In First Out), bijvoorbeeld Queues.

Een voorbeeld van een stack is een array in PHP waar je alleen een item afhaalt als dat als laatste is toegevoegd.

Met stack-based parsen wordt dan ook een manier van parsen bedoeld waarbij je gebruik maakt van een stack. Doorgaans wordt het subject (de string) van begin tot eind doorlopen en worden in de stack states opgeslagen.
Wanneer je bijvoorbeeld een openings-<B> tegenkomt sla je die op in de stack (met een 'push' method). Hierna kun je natuurlijk alleen nieuwe openingstags tegenkomen, of een sluitings-</B> tag. Iedere openingstag push je weer op de stack en bij een sluitingstag haal je weer een element van de stack af (en als het goed is, is dat altijd het bijbehorende element, je haalt ze weer in omgekeerde volgorde eraf). Een item van de stack halen doe je met een 'pop' method.
Heb je heel je string doorlopen, dan moet je stack weer leeg zijn.

De loop is dan de engine van je parser en de stack gebruik je om de state in op te slaan.
Je kunt zelf een LIFO stucture ontwerpen, maar je kunt ook gewoon een PHP array nemen en je bij het gebruik daarvan aan de regels houden die bij een stack horen.

Acties:
  • 0 Henk 'm!

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 09-07 21:03
Op zaterdag 06 april 2002 16:59 schreef Grum het volgende:
Stackbased is een term die je op google.com kan invullen en dan enorme bergen info over terug krijgt.
Valt nogal tegen, volgens mij. Maar het principe is heel simpel. Je hebt een stack(een stapel). Daar gooi je wat op, en omdat het een stapel is, moet je steeds de bovenste er van afhalen(LIFO - Last In, First Out). Het kan ook andersom(FIFO - First In, First Out), maar dan heb je een queue(een wachtrij).
Dit kan je bijvoorbeeld gebruiken voor HTML-parsers en template engines. Als je een tag tegenkomt, gooi je die op de stack, als je dan de afsluitende tag tegenkomt, haal je 'm van de stack af. Je kunt dan ook meteen checken of het de tags goed in elkaar zitten, want als er een tag niet afgesloten is, dan klopt de tag op de stack niet met de afsluitende tag die je net gevonden hebt(waarna je dus fijn een error naar de browser kan sturen :P )

[Edit]
Tomato was wat eerder en duidelijker. :D

Overigens vind ik het een beetje raar dat je een template engine gaat schrijven in PHP. PHP is nu juist zo bedoeld dat het zelf een template-engine is. Eigenlijk probeer je de taal steeds simpeler te maken. Is PHP niet simpel genoeg?

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op zaterdag 06 april 2002 17:06 schreef Johannes het volgende:
Overigens vind ik het een beetje raar dat je een template engine gaat schrijven in PHP. PHP is nu juist zo bedoeld dat het zelf een template-engine is. Eigenlijk probeer je de taal steeds simpeler te maken. Is PHP niet simpel genoeg?
De scheiding tussen code en layout is vaak nog steeds erg wenselijk. Als je bv een forum levert aan klanten dan wil je niet dat ze in je PHP's moeten klooien en vervolgens allerlei parse errors krijgen en jou de schuld geven.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het idee om het maar zo te doen, ik kan meerdere templates tegelijk laden en per template de dingen toevoegen en wanneer ik de layout wil laten zien parse ik gewoon alle string met mijn routine :)...

dus ik kan mijn header, content en footer apart laden en weergeven :)

Acties:
  • 0 Henk 'm!

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 09-07 21:03
Op zaterdag 06 april 2002 17:18 schreef Orphix het volgende:

[..]

De scheiding tussen code en layout is vaak nog steeds erg wenselijk. Als je bv een forum levert aan klanten dan wil je niet dat ze in je PHP's moeten klooien en vervolgens allerlei parse errors krijgen en jou de schuld geven.
Ik snap de voordelen van templates wel, maar ik vind het een kludge om een template-taal(ik moet toegeven, een krachtige), te gebruiken om een template-engine te bouwen voor een nieuwe template-taal(is 't nog duidelijk?).

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op zaterdag 06 april 2002 16:17 schreef Arien het volgende:

[..]

Recursieve regex. >:)

:P
8-)
Oftewel ik ben bezig met een parser die dmv regexp's recursief een stack opbouwt :7

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Johannes:
Ik snap de voordelen van templates wel, maar ik vind het een kludge om een template-taal(ik moet toegeven, een krachtige), te gebruiken om een template-engine te bouwen voor een nieuwe template-taal(is 't nog duidelijk?).
woei :) Kan me herinneren dat Arien er ongeveer een jaar geleden precies hetzelfde over zei...

Ik heb de volgende "tegenwerping":
  • PHP overstijgt doorgaans een template-taal behoorlijk. Je zou kunnen zeggen dat het het midden houdt tussen een script-taal en een template-engine.
  • Laten we er vanuit gaan dat we code (data-verwerking) en layout zoveel mogelijk willen scheiden
  • Als je dat puur in PHP zou moeten doen, is PHP niet toereikend als template engine (imo), plus dat je gauw de fout maakt toch weer code te gebruiken in de template
  • conclusie: maak je eigen template engine :)
desalniettemin kan ik me heel goed voorstellen waarom je het een kludge vindt, maar ik vind het geen slechte keuze een template-engine naast PHP te gebruiken, wanneer je PHP verder alleen voor data-extractie etc gebruikt.

just my $0,02 :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Arien: Waarom niet templates via XSLT vertalen? Hallo Martin! :+
:* . Leuk weer eens iets van je te zien :) .

Template Languages in XSLT

Ik zeg niet dat ik het mooi vind ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
drm: woei :) Kan me herinneren dat Arien er ongeveer een jaar geleden precies hetzelfde over zei...
En nog steeds ;)
PHP overstijgt doorgaans een template-taal behoorlijk. Je zou kunnen zeggen dat het het midden houdt tussen een script-taal en een template-engine.
Hmmm, dat ben ik niet met je eens. Wat bedoel je met een template taal? Wanneer je kijkt naar 'professionele' oplossingen zie je vaak dat je toch in je templates een taal als Perl of Python kunt gebruiken. Dus nog een stuk krachtiger dan PHP.
Laten we er vanuit gaan dat we code (data-verwerking) en layout zoveel mogelijk willen scheiden
Hmmmjah, eigenlijk zou ik het zo niet willen omschrijven. Het processen van een template kun je ook data-verwerking noemen.
Je eigenlijk je applicatie in lagen opzetten. De business-logica en de presentatie-laag wil je natuurlijk scheiden (en dat kan in meer dan 2 stappen).
<li> Als je dat puur in PHP zou moeten doen, is PHP niet toereikend als template engine (imo), plus dat je gauw de fout maakt toch weer code te gebruiken in de template
</li>
Maar het leuke van een presentatie-laag is dat er ook logica in kan voorkomen. In veel template systemen voor PHP is ook een soort primitieve vorm van programmeren mogelijk (zie bijv conditional statements). In professionele oplossingen gaat dit nog veel verder, waar je je templates lekker kunt vullen met bijvoorbeeld Perl code.
Deze code heeft dan niets te maken met de business-logica, maar met presentatie. Denk bijvoorbeeld aan de logica die nodig is om in een tabel iedere row om en om zwart en wit te kleuren. Hier is logica voor nodig, maar dit wil je niet in je business-logica opnemen. Het is onderdeel van de presentatie, dus als je met templates werkt wil je dat daar in kunnen verwerken.
desalniettemin kan ik me heel goed voorstellen waarom je het een kludge vindt, maar ik vind het geen slechte keuze een template-engine naast PHP te gebruiken, wanneer je PHP verder alleen voor data-extractie etc gebruikt.
Ik gebruik het zelf ook hoor ;)
Maar misschien kun je het in een wat breder perspectief zien, al is dat voor relatief kleine projecten wellicht niet echt relevant.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

tomato zei er e.e.a. over...
[o.a. "code (logica) in presentatielaag vaak ook nodig"]
warempel ben ik het daar mee eens :D

Maar de keuze tussen een losse template-engine (los van waar die op draait) en puur PHP blijven gebruiken, zou imo hetzelfde zijn als dat ik bijvoorbeeld niet Perl en PHP zou mogen combineren, wanneer ik het misschien wel prettig vind om het ene in PHP te doen en het andere in Perl, for instance.

Ben zelf al een tijd bezig met een template parser in PHP, en die werkt echt een stuk fijner dan PHP zelf (imo :D), simpelweg omdat ik alles gewoon zo aan kan passen dat 't allemaal net ff wat vlugger en overzichtelijker te coderen is. Dingetjes als regeltje wit-regeltje zwart zijn ingebakken faciliteiten. Meer iets als een attribuut zoals je dat in html ziet, dan een stuk code wat dat voor je doet. Daarnaast biedt het de mogelijkheden dergelijke stukken code gewoon toe te voegen als handlers in de template-parser, zodat er nog steeds geen code in de template zelf voorkomt... Da's een beetje mijn idee van een template parser.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

re: drm

Source postuhhhh :P

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Stoel:
re: drm

Source postuhhhh :P
komt nog wel...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Op dinsdag 09 april 2002 11:31 schreef drm het volgende:

[..]

komt nog wel...
kee dan,kunnen we wat van leren .. :D :D

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Stoel:
kee dan,kunnen we wat van leren .. :D :D
Heb helaas veel te weinig tijd om er eens een beetje docs etc. voor te schrijven, en 'm helemaal goed door te testen.

Maar als ik weer een beetje gesettled ben (moet nu nog verhuizen, etc...) dan komt het allemaal wel :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zit nu met een vaag probleem, in mijn template heb ik het volgende verwerkt zitten..
code:
1
2
3
4
5
[ONCE]
Bladediebla

etc etc
[ENDONCE]

nu heb ik de volgende routine er in gemaakt om dit te removen als het meer dan 1x is laten zien...
PHP:
1
<?$thePattern = '!\\[ONCE\](\w.*?)\\[ENDONCE\]!i';        preg_match_all($thePattern, $theString, $theBackRef);//        echo '<pre>';//        var_dump($theBackRef);//        echo '</pre>';        $theString = str_replace($theBackRef[0][$i], "", $theString);?>

Maar als dit op meerdere regels staat werkt het niet, iemand een idee? :D tnx.

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
moet je ff de /s modifier gebruiken.
Pagina: 1 2 Laatste