[PHP] Simpel templates gebruiken

Pagina: 1
Acties:
  • 176 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Ik hebmet php en html een simpel template ding in elkaar geflansd.
Het gene wat ik mij afvraag is hoe je variabelen kunt vervangen door php code. Dit werkt op het moment dus niet.
Dit is het template bestand:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$template="
<html>
<head>
<title>{title}</title>
{head}
</head>
<body bgcolor={bodycolor}>
{body}
</body>
"
;
?>

Dit is het bestand dat de template verwerkt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include("tpl.php");
$bodycolor="red";
$title="Test...ikel";
$head="<?php function blaat(){echo'blaat';} ?>";
$body="<?php blaat(); ?>";
$template = str_replace("<?title}", $title, $template);
$template = str_replace("{bodycolor}", $bodycolor, $template);
$template = str_replace("{body}", $body, $template);
$template = str_replace("{head}", $head, $template);
echo $template;
?>


Ik denk dat er ergens een syntaxprobleempje zit...

btw dit is de output source:
code:
1
2
3
4
5
6
7
8
<html>
<head>
<title>Test...ikel</title>
<?php function blaat(){echo'blaat';} ?>
</head>
<body bgcolor=red>
<?php blaat(); ?>
</body>


Dank u hartelijk! ;)

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
include("tpl.php");
$bodycolor="red";
$title="Test...ikel";
$head=blaat();
$body=blaat();
$template = str_replace("{title}", $title, $template);
$template = str_replace("{bodycolor}", $bodycolor, $template);
$template = str_replace("{body}", $body, $template);
$template = str_replace("{head}", $head, $template);
echo $template;

function blaat(){
     return('Blaat');
}


Je kunt toch gewoon een variabele vullen dmv een functiecall?
Of probeer je php met php te genereren?!?!


@ ripex vvvvv Ik heb niet het gevoel dat dat is wat de TS bedoelt, hij schrijft nml een complete functie er al in. Of wil de topicstarter hiermee tch dynamisch functies opbouwen :?

[ Voor 38% gewijzigd door beetle71 op 05-04-2004 14:09 ]


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Je wilt PHP in PHP parsen :)

De EVAL functie zou je iig aardig op weg moeten helpen. Daarnaast is debuggen ook een vak ;) Verder zijn er genoeg template parsers te vinden, dus bedenk en kijk eens wat er allemaal mogelijk is en hoe men het daar doet. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Je bedoelt iets als
code:
1
2
$variabele = {blaat};
str_replace($variabele, $nieuwe_var, $geheel);

?

Hmm misschien wel handig, kan ik er een loop inbouwen..

kijken of het ook php code ondersteunt ;)

Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

ripexx schreef op 05 april 2004 @ 14:07:
Je wilt PHP in PHP parsen :)

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Inderdaad, ik wil bijvoorbeeld {head} vervangen door een aantal PHP functies.

Voor de rest is het template document puur HTML opbouw dus ik snap niet waarom ik daar geen PHP in kan zetten (met <? en ?> natuurlijk)

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Je gooit nu php in een string... en dat wordt natuurlijk niet geparsed :)
Wat al eerder gezegd werd, je kan gewoon zoiets doen:
PHP:
1
$title = blaat();

Output daarvan is de output van blaat(); ... output van $title = "blaat();" is een string met de waarde blaat();...
Is basis-php-kennis volgens mij...

[ Voor 16% gewijzigd door blizt op 05-04-2004 14:19 ]

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
en dan met blaat() een variabele ergens vandaan plukken...

tot zover volg ik je....

denk dat ik te moeilijk aan het denken ben, dat ik alles in die st_replace wil zetten...

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Thrackan schreef op 05 april 2004 @ 14:14:
Voor de rest is het template document puur HTML opbouw dus ik snap niet waarom ik daar geen PHP in kan zetten (met <? en ?> natuurlijk)
Misschien omdat je dan probeert om php in php te zetten :?
M.a.w. je zit al in php dus je kunt gewoon een functie aanroepen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$template=str_replace('{head}',head(),$template);

function head(){
   $rv=javascripts();
   $rv.=metatags();
   return($rv);
}
function javascripts(){
   return('<script.....................>');
}
function metatags(){
   return('<meta..............>');
}

[ Voor 6% gewijzigd door beetle71 op 05-04-2004 14:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

je kunt het bestand ook opnieuw opbouwen met php/html.

Dus een string maken met daarin php/html en dat naar een bestand zetten b.v. bestand.php, zo werkt mijn contentmanager ook. In bestand.php zitten in dat geval een aantal arrays.

Acties:
  • 0 Henk 'm!

  • droeftoeter
  • Registratie: Mei 2002
  • Laatst online: 19-06 00:34
Zoek eens naar php smarty, dat is specifieke template software in php.

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Hier de nu werkende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include("tpl.php");
function blaat()
{
 $blaat = "blaatschaap";
 return $blaat;
}
$_bodycolor="red";
$_title="Test...ikel";
$_head="";
$template = str_replace("{title}", $_title, $template);
$template = str_replace("{bodycolor}", $_bodycolor, $template);
$template = str_replace("{body}", blaat(), $template);
$template = str_replace("{head}", $_head, $template);
echo $template;
?>


aan de template is nix veranderd :)

dank u!
suggesties voor verbetering zijn natuurlijk altijd welkom...

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
droeftoeter schreef op 05 april 2004 @ 14:28:
Zoek eens naar php smarty, dat is specifieke template software in php.
De bedoeling is simpel templates te gebruiken zonder template engine..

forgot to mention that, sorry ;)

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Thrackan schreef op 05 april 2004 @ 14:28:
Hier de nu werkende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include("tpl.php");
function blaat()
{
 $blaat = "blaatschaap";
 return $blaat;
}
$_bodycolor="red";
$_title="Test...ikel";
$_head="";
$template = str_replace("{title}", $_title, $template);
$template = str_replace("{bodycolor}", $_bodycolor, $template);
$template = str_replace("{body}", blaat(), $template);
$template = str_replace("{head}", $_head, $template);
echo $template;
?>


aan de template is nix veranderd :)

dank u!
suggesties voor verbetering zijn natuurlijk altijd welkom...
Niet echt lekkerere code vind je wel? 't Is overigens wel wat ik bedoelde hoor, maar niet zo.... Dat wil zeggen, kan je niet beter een array maken en dan met foreach er door heen? Kan nu ff geen voorbeeldje geven helaas

En maak een functie voor al die str_replaces man, da's toch veel netter/overzichtelijker/handiger/toekomstgerichter?

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Thrackan schreef op 05 april 2004 @ 14:29:
[...]


De bedoeling is simpel templates te gebruiken zonder template engine..

forgot to mention that, sorry ;)
Nu komt de }:O uit de mouw :) , template engine werkt toch hetzelfde 8)7
alles zelf maken is leuker natuurlijk :)

[ Voor 35% gewijzigd door Verwijderd op 05-04-2004 14:39 ]


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Niet echt lekkerere code vind je wel? 't Is overigens wel wat ik bedoelde hoor, maar niet zo.... Dat wil zeggen, kan je niet beter een array maken en dan met foreach er door heen? Kan nu ff geen voorbeeldje geven helaas

En maak een functie voor al die str_replaces man, da's toch veel netter/overzichtelijker/handiger/toekomstgerichter?
Nou ja ik vind dit best knap voor een tussen begin van de topic en mijn afgelopen reply geschreven stukje :)

Indien belangstelling zal ik ook mijn komende stappen posten in dit topic

Acties:
  • 0 Henk 'm!

Verwijderd

Probeer je het html / it template systeem van http://pear.php.net na te maken?

http://pear.php.net/manua...html.html-template-it.php

Je kan deze broncode ook bekijken.. :)

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Verwijderd schreef op 05 april 2004 @ 14:43:
Probeer je het html / it template systeem van http://pear.php.net na te maken?

http://pear.php.net/manua...html.html-template-it.php

Je kan deze broncode ook bekijken.. :)
Heheh, nog nooit op die site geweest joh!

Nee ik ben voor school bezig en nu moeten we verplicht DCOS toepassen (Data Code en Opmaak Scheiden)

Het enige is dat men vindt dat wij geen template engine nodig hebben dus zoek ik nu uit hoe alles een beetje zonder kan...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PHP = template engine.. Wat is het nut om performance weg te gooien met het vervangen van variabelen?

PHP:
1
2
<?=$head ?>
<?php echo $head ?>


Werkt toch veel makkelijker dan {head} en dan gaan lopen vervangen :?

of als je het wat overzichtelijker wilt houden:

PHP:
1
<?php echo getHead() ?>


(en niet te ver doordenken aub :P)

[ Voor 33% gewijzigd door Bosmonster op 05-04-2004 15:10 ]


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Zoals ik al zei moeten we dus data code en opmaak scheiden (dus ook in aparte bestanden)

Daarom zal ik met vervanging van variabelen moeten werken...

Ben wel van plan zelf een wat uitgebreider hobbyprojectje op te zetten waar je zelf je layout en je kleuren kan veranderen (CSS/dit soort template combo)

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

En je hebt niet nagedacht over het gebruik van XML zeker? :)

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
het is een php/html/mysql project

niks anders toegestaan :( en dat terwijl we een megadik boek over XML moesten kopen :S

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

blizt schreef op 05 april 2004 @ 16:11:
En je hebt niet nagedacht over het gebruik van XML zeker? :)
php -> Template -> HTML
php -> XML -> XSLT -> HTML

Waarom zou je voor die extra stap kiezen?

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Waarom zou je php gebruiken Brakkie? ;) Maar ja, nu gai k vast een "XML client- of serverside parsen"-discussie uitlokken, wat te veel offtopic gaat.

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 17:33

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Thrackan schreef op 05 april 2004 @ 14:28:
Hier de nu werkende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
include("tpl.php");
function blaat()
{
 $blaat = "blaatschaap";
 return $blaat;
}
$_bodycolor="red";
$_title="Test...ikel";
$_head="";
$template = str_replace("{title}", $_title, $template);
$template = str_replace("{bodycolor}", $_bodycolor, $template);
$template = str_replace("{body}", blaat(), $template);
$template = str_replace("{head}", $_head, $template);
echo $template;
?>


aan de template is nix veranderd :)

dank u!
suggesties voor verbetering zijn natuurlijk altijd welkom...
Is het uberhaubt ooit in je opgekomen dat str_replace arrays ondersteunt? :+

PHP:
1
2
3
4
$tpl = str_replace( array('{title}', '{bodycolor}', '{body}', '{head}'),
                    array($_title, $_bodycolor, blaat(), $_head),
                    $template);
echo $tpl;


Bovendien zou ik toch eens op zoek gaan naar een 'echte' template-engine :)

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Is het uberhaubt ooit in je opgekomen dat str_replace arrays ondersteunt?
Nee eigenlijk niet! Ik leer elke dag hier ;)
Bovendien zou ik toch eens op zoek gaan naar een 'echte' template-engine :)
Lees mijn andere posts, we mogen simpelweg geen bestaande engine gebruiken, anders had ik dat allang gedaan :X

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Het zal nog niet geheel netjes zijn, maar dit is het tot nu toe:
code:
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
<?php
include("tpl.php");
Class DataVerwerker
{
 function DataVerwerker($template)
 {
  $this->template = $template;
  $this->replace['{body}'] = $this->get_body_content();
  $this->replace['{title}'] = $this->get_title();
  $this->replace['{head}'] = $this->get_head_content();
  $this->replace['{bodycolor}'] = $this->get_bodycolor();
  
  $this->original['{body}'] = "{body}";
  $this->original['{title}'] = "{title}";
  $this->original['{head}'] = "{head}";
  $this->original['{bodycolor}'] = "{bodycolor}";
 }
 function maak_pagina()
 {
 $this->replace($this->template, $this->original, $this->replace);
 }
 function get_body_content()
 {
  $body = "blaatschaap";
  return $body;
 }
 function get_title()
 {
  $title = "Test...ikel";
  return $title;
 }
 function get_head_content()
 {
  $head = "";
  return $head;
 }
 function get_bodycolor()
 {
  $bodycolor="green";
  return $bodycolor;
 }
 function replace($template, $original, $replace)
 {
   $template = str_replace($original, $replace, $template);
   echo $template;
 }
}
$blaat = new DataVerwerker($template);
$blaat->maak_pagina();
?>


De template is nog steeds niks veranderd.

De get_variabele functies zijn er in geprogrammeerd omdat ik later data uit een database moet halen. Dat zal dan wel met een enkele query gebeuren maar ik kan nu niet meerdere vars in een keer returnen zonder een array te gebruiken...

En ik breng mezelf weer op een idee :D

Edit: meteen uitgewerkt, scheelt een hoopje code!

code:
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
<?php
include("tpl.php");
Class DataVerwerker
{
 function DataVerwerker($template)
 {
  $this->template = $template;
  $this->replace = $this->get_data();
  $this->original['body'] = "{body}";
  $this->original['title'] = "{title}";
  $this->original['head'] = "{head}";
  $this->original['bodycolor'] = "{bodycolor}";
 }
 function maak_pagina()
 {
 $this->replace($this->template, $this->original, $this->replace);
 }
 function get_data()
 {
 $replace['body'] = "blaatschaap";
 $replace['title'] = "Test..ikel";
 $replace['head'] = "";
 $replace['bodycolor'] = "green";
 return $replace;
 }
 function replace($template, $original, $replace)
 {
   $template = str_replace($original, $replace, $template);
   echo $template;
 }
}
$blaat = new DataVerwerker($template);
$blaat->maak_pagina();
?>

[ Voor 30% gewijzigd door Pathogen op 06-04-2004 09:37 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Thrackan schreef op 05 april 2004 @ 16:00:
Zoals ik al zei moeten we dus data code en opmaak scheiden (dus ook in aparte bestanden)

Daarom zal ik met vervanging van variabelen moeten werken...

Ben wel van plan zelf een wat uitgebreider hobbyprojectje op te zetten waar je zelf je layout en je kleuren kan veranderen (CSS/dit soort template combo)
Je kunt eenvoudig met 'losse bestanden' werken als je dat perse wil.. Wat betreft het scheiden van code/opmaak zijn php-templates ook maar fake. Waarom zou je een halve scripttaal gaan herbouwen voor templates als PHP juist al een template scripttaal is? En waarom zou je wel {head} mogen gebruiken en geen <?=$head ?>? Omdat jij vindt dat de een code is en de ander niet? Imho zijn het beiden gewoon referenties naar variabelen, alleen kost de eerste je veel moeite en performance om te vervangen en de tweede niet.

Imho zijn template engines in PHP het meest nutteloze dat ooit met de taal gedaan is. Een template/script-taal/parser bouwen in een template/script-taal/parser :P

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Dus je bent het juist wel eens met mijn werkwijze? ;)

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Bosmonster schreef op 06 april 2004 @ 09:38:
[...]
Imho zijn template engines in PHP het meest nutteloze dat ooit met de taal gedaan is. Een template/script-taal/parser bouwen in een template/script-taal/parser :P
Een template engine die verder geen functionaliteit bevat anders dan {head} vervangen door $ head is het gebruik van een template engine redelijk nutteloos imo. Als er echter meer functionaliteit in is ondergebracht die te maken heeft met het outputten van HTML kan het wel nut hebben imo. Denk aan bijv. smarty.

Ik denk dat de topic starter gewoon creatief moet omgaan met de omschrijving code scheiden van opmaak en het gewoon het scheiden van programma en business logica van de opmaak moet noemen. In dat geval kan je wel gewoon php code in je opmaak gooien. De php code die je dan namelijk in je templates hebt heeft alleen te maken met de logica die te maken heeft van het opbouwen van de opmaak van je html pagina's.

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
Brakkie schreef op 06 april 2004 @ 11:27:
[...]

Ik denk dat de topic starter gewoon creatief moet omgaan met de omschrijving code scheiden van opmaak en het gewoon het scheiden van programma en business logica van de opmaak moet noemen. In dat geval kan je wel gewoon php code in je opmaak gooien. De php code die je dan namelijk in je templates hebt heeft alleen te maken met de logica die te maken heeft van het opbouwen van de opmaak van je html pagina's.
Zoals het nu is (in de template als enige PHP dat het de HTML in een string gooit) is het OK voor de leraar. De functies zijn uitgebreid genoeg om te doen wat we aankomend project moeten doen:
Wij gaan een virtueel web-based koffiezetapparaat maken met gebruikersinstellingen.
De basis is er al: We kunnen al met het hele GET en POST gebeuren overweg, we kunnen een beetje PHP en mySQL en we kunnen nu zowaar ook nog alles een beetje netjes scheiden!

Btw: ik doe projectonderwijs TI in delft, nog meer van die mensen hier toevallig?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Thrackan schreef op 05 april 2004 @ 16:00:
Zoals ik al zei moeten we dus data code en opmaak scheiden (dus ook in aparte bestanden)
En dat kan niet als je gewoon php files gebruikt? Onzin, het enige wat echt anders is is dat je de [nohtml]<? ?> syntax gebruikt ipv de { } syntax, en dat je variabelen een $ voor hun naam krijgen. Niets meer, niets minder
Als je al je templates (ja, php files zijn ook templates) in een aparte directory zet, wat is dan precies het probleem? Code en opmaak zijn volledig gescheiden

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
ehm... dat is precies wat ik nu doe...

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Thrackan schreef op 06 april 2004 @ 11:40:
ehm... dat is precies wat ik nu doe...
Dus je doet het dus niet meer zo als je in je start post voor ogen had? Want dat is niet wat we bedoelen denk ik :)

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Brakkie schreef op 06 april 2004 @ 11:27:
[...]


Een template engine die verder geen functionaliteit bevat anders dan {head} vervangen door $ head is het gebruik van een template engine redelijk nutteloos imo. Als er echter meer functionaliteit in is ondergebracht die te maken heeft met het outputten van HTML kan het wel nut hebben imo. Denk aan bijv. smarty.
Juist als je die extra functionaliteit hebt is het nutteloos. Want dan ben je dus echt een hele scripttaal aan het herbouwen (control-structures etc). Code/opmaak kun je eenvoudig scheiden door de code ergens anders te houden en in je template alleen control-structures en variabelen te gebruiken. Wil je ECHT scheiden dan moet je gewoon XSLT pakken.

De enige reden die ik kan bedenken om een in PHP gebouwde template engine te gebruiken is als je anderen templates wil laten maken en hen geen volledige PHP-functionaliteit wil geven.

[ Voor 12% gewijzigd door Bosmonster op 06-04-2004 14:13 ]


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Juist als je die extra functionaliteit hebt is het nutteloos.
- Caching functionaliteit.
- Opbouwen van forms.
- Wat je al noemt. Ervoor zorgen dat anderen geen complete php functionaliteit voor handen hebben.

Voorbeelden waarop ik doel. Niet nutteloos in mijn ogen.

[ Voor 21% gewijzigd door Brakkie op 06-04-2004 14:19 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

Enkele replies in dit topic doelde al op het feit dat PHP in feite zelf al een template taal is. Ik raad je sterk aan dit artikel eens te lezen: Beyond The Template Engine

Dit heeft mij ook van het idee om een template engine, soortgelijk aan de jouwe, te bouwen af gebracht. In principe is het namelijk heel goed mogelijk om met alleen PHP de Buisness logic van de Presentation logic te scheiden, en dat is waar het om gaat!

Success ermee verder :)

[ Voor 4% gewijzigd door Verwijderd op 06-04-2004 14:46 ]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Brakkie schreef op 06 april 2004 @ 14:18:
[...]


- Caching functionaliteit.
Dit is niet specifiek voor een template engine en er zijn zoveel PHP classes die dat ook doen, maar dan zonder template engine
- Opbouwen van forms.
Is dat geen presentatie logica? Als je forms gaat genereren in PHP sla je dus de spijker mis en het opbouwen van forms in een template aan de hand van een template engine zie ik het nut niet zo van in, je kan dat toch gewoon als HTML doen?
- Wat je al noemt. Ervoor zorgen dat anderen geen complete php functionaliteit voor handen hebben.
Mja is wel een voordeel, maar weegt dat ook op tegen de rest (een goed ontwerp, goede scheiding) en als het zo is dat de webdesigner iets uit (bijvoorbeeld) een database nodig heeft, is er iets fout gegaan met het ontwerp van de applicatie en kun je dat als nog (mits het niet met de layout te maken heeft) in het bussiness gedeelte implenteren.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ach ik ben gewoon enthousiast over smarty. De zaken die ik genoemd heb zitten daar zo'n beetje in. De caching van templates e.d. die daar al ingegebouwd zitten bevallen me prima.

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Ik heb het zelf een poosje terug gedaan om html-pagina's te genereren voor een fotoalbum dat ik op een webspace zonder php zet. :X beetje vaag, weet ik.

ontopic:
Wat jouw leraar denk ik nog mooier vindt, is als je een php pagina maakt met alleen html-code en af en toe <?php echo head()?> en dat soort zooi heeft. Bovenaan zet je dan een include naar het php-bestand met de echte logica (in een nette class-georienteerde structuur uiteraard :) ). Je hebt dan de presentatielaag volkomen losgekoppeld van de logica: alle presentatie is dus apart.

1 tip: als je het doet, doe het goed. Ik zit hier op een stage, en daar zijn ze ook zo begonnen, maar hebben ze het anders afgemaakt. Dat werkt niet :(

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
@Brakkie-> Ik was niet erg helder met mijn uitleg in mn openingspost... waarschijnlijk omdat ik toen ook nog niet precies wist wat er nou nodig was
@Jaap-> Heb ik idd al wel eens gelezen voordat ik hier terecht kwam...
@MBV-> Is <? echo head()?> echt zo'n verschil met {head} replacen?
Zo ja, wat zijn hier de voordelen van?

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Wat je ook kan doen, als je toch zo graag { en } wil gebruiken is zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$Title = "Test website";
echo <<< HEA
<head>
<title>
       {$Title}
</title>
</head>
HEA;
?>

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
PrisonerOfPain schreef op 07 april 2004 @ 08:52:
Wat je ook kan doen, als je toch zo graag { en } wil gebruiken is zoiets:
PHP:
1
2
3
4
5
...
echo <<< HEA
...
HEA;
?>
^huh? hoe werkt dat dan?
Voor mij ziet het eruit als brakke code... k zie de logica dus niet ;)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Thrackan schreef op 07 april 2004 @ 09:04:
[...]

^huh? hoe werkt dat dan?
Voor mij ziet het eruit als brakke code... k zie de logica dus niet ;)
Wat is daar brak aan? Dat heet 'alternative syntax' -> in dit geval heredoc syntax zie ook http://www.php.net/manual...pes.string.syntax.heredoc

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
aah...
tsja wat de boer niet kent heh ;)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
*leer ervaring* :p

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Topicstarter
fuck, en dat op school! :P
Pagina: 1