Re: templating engine options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tom Worster wrote:
On 5/25/09 10:04 AM, "Stuart" <stuttle@xxxxxxxxx> wrote:

Quick question, how would you implement the following using your
XML-based template syntax...

<div class="option <?php if (!empty($option_class)) { echo
$option_class; } ?>"> ... </div>

It's worth noting that I'm simply suggesting a different way of
looking at the world. If you have a templating system you're happy
with then feel free to continue using it, but I'd encourage you to
take the time to consider whether it actually gives you any tangible
benefits. I've used Smarty as well as a number of proprietary
templating systems and I'm yet to come across one that can justify its
existence over simply using PHP.

It's also worth noting that when I refer to a "templating system" I
mean something that introduces an extra step when running a template.
I consider the template classes I use to be a templating system but
they do nothing but formalise the process of passing data to other PHP
scripts and providing utility functions for them to use.

revisiting the template question is interesting. i'm grateful for this
discussion.

as far as your question goes, with phplib-template, i'd do:

<div class="option {option_class}"> ... </div>

and in the php it is:

$t->setVar('option_class', empty($option_class) ? '' : $option_class);

or some equivalent code. $t is the template object.

that's like smarty too

<div class="option {$option_class}"> ... </div>

$s->assign('option_class', empty($option_class) ? '' : $option_class);

identical infact - like the way you moved the logic out of the template in that example though :p

the interesting part is trying to explain why i like this better than your
method. perhaps it's because it reduces the page assembly task to a sequence
of regexp replacements and i'm more comfortable with that than i am with
passing variable state to an included php file. why would i be? maybe i'm
more comfortable looking at the world as nothing but strings and in this
world, manipulating them is my job.

there's certainly something i like about not having any php in my html
templates but i can't say exactly what.

snap - I think it's old sites and big nasty chunks monolithic code intertwined that any fool or genius could break in a second, but couldn't read for the life of them.

for this reason purely, a template engine is a good idea as it enforces the good practise.

i don't think i could come up with better justifications for my current
methods without trying our the alternatives for a decent period.

I've played a lot of template things in the past - the only thing I thought was great was xsl, but not many people (comparatively) know xsl. Likewise with actionscript (flash/flex) but not even getting in tot hat as it's way outside of scope.

i think the test will be the template engine, langauge, syntax, whatever that can best hand this:

<?php

if( isset($comments) && is_array($comments) && count($comments) > 0 ) {
  echo '<h2>Comments</h2>';
  echo '<div id="comments">';
  foreach( $comments as $index => $comment ) {
    echo '<a href="' . $comment->link . '">';
    echo $comment->title;
    echo '</a>';
  }
  echo '</div>';
} else {
  echo '<h3>No Comments</h3>';
}
?>

without any php or escaping in and out of.

I know it's pre-hypertext processor and supposed to spit out html - but I REALLY don't want to ever spit out a single html element from a php script ever - nothing but raw data, a raw html template separately and then *something* in the middle to make the magic happen.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux