PHP expert |
|
Murfy had het over een template engine. (hij wil die gaan maken). Ik wil dat ook (nog) wel eens proberen. De laatste 3 keer beviel mijn template parser me niet. Wat vinden jullie dat in een template engine moet zitten? Hoe moet de syntaxis opgebouwd zijn? Met blocks zoals TemplatePower of met commando's zoals Smarty?
Dus:
[BLOCK: foo]
<html>
<body>
[INCLUDE: bar]
</body>
</html>
[/BLOCK]
[BLOCK: bar]
<h1>{title}</h1>
<p>{content}</p>
[/BLOCK]
[BLOCK: foo] <html> <body> [INCLUDE: bar] </body> </html> [/BLOCK] [BLOCK: bar] <h1>{title}</h1> <p>{content}</p> [/BLOCK]
Dit wordt dan zo aangeroepen (met OOP, maar nu even zo om het simpel te houden):
<?php
parse_template(
array('foo' =>
array('bar' =>
array(0 => array('title' => 'een', 'content' => 'een_content')
1 => array('title' => 'twee', 'content' => 'twee_content')
)
)
)
);
?>
<?php parse_template( array(0 => array('title' => 'een', 'content' => 'een_content') 1 => array('title' => 'twee', 'content' => 'twee_content') ) ) ) ); ?>
Of met loops dus zo:
<html>
<body>
{* start-loop bar: *}
<h1>{title}</h1>
<p>{content}</p>
{* end-loop *}
</body>
</html>
<html> <body> {* start-loop bar: *} <h1>{title}</h1> <p>{content}</p> {* end-loop *} </body> </html>
Met loops zul je ook ifs moeten hebben, maar die heb je bij blocks niet nodig omdat je gewoon het block weg kunt laten (werkt dus als een if, maar is gebaseerd op blocks).
Wat vinden jullie?
En wat is betere syntaxis? {* ... *} of [...] of nog iets anders?
Alvast bedankt,
Jules
|