templating, anyone?
| From: | Sebastian | Date: | Fri, 03 Sep 2004 18:30:42 +0000 |
| Subject: | templating, anyone? | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-33202@lists.php.net to get a copy of this message | ||
Hi! This is my first time writing, so go easy on me :p
I've had a couple of conversations with the folks at pear-group and
about another templating engine and received their thoughts, but yours
matter, too. I'm going to provide some of the conversation (my
reasoning behind wanting another templating engine) and see what you
guys think. If someone is currently working on a templating engine and
would want to implement the things I speak of, I would be glad to help
with that project. Otherwise, please consider the following :)
-------------------------------------------------------
(Pasted from another e-mail to pear-group)
Before you object, I want to let you know that yes, I already know
there are tons of templating engines written in PHP, even ones that
may implement PHP's native parsing ability. If there are already
engines that implement what I have implemented, please point me to
them because I have not found any. I wouldn't be requesting if I were
able to find something that implemented what I wanted :) Let me start
by stating what is wrong with many templating engines:
- They are templates on top of templates. Special languages are
constructed and parsed to do what PHP already does natively. These
types of engines are inherently slow and inconvenient because you must
learn X parsing language (and regardless of simplicity, time is
money!)
- Footprints are too large -- there is usually too much code to be run
which adds to the longer load times and poor performance on lower-end
machines
- While some of the engines I looked at used a method I propose, they
used output buffering! And to what benefit? None, that I can see.
While some of the engines provided a filtering function, albeit
useful, is slow in any implementation that I can think of (more
parsing, more memory, less performance....
- Some of the engines whose source I read were very basic but had many
of the aforementioned issues, making them undesirable.
I made a number of references to engines whose source I browsed:
http://www.sitepoint.com/forums/showthread.php?threadid=123769
-- I
read source for 16 of the engines listed in the first post on that
page -- they all (included a couple of other engines I found on the
'net) had the issues mentioned above.
Now, let me talk about what I propose:
- Template parsing is done natively by PHP -- no tricky dance moves,
parsing overhead, or learning curve
- No output buffering, output is echo()'ed (or include()'d, as the
case may be) when requested -- this prevents overhead
- Nested objects (fun), named objects (eases dynamics of creation and
breaks from linear logic)
- Locking (quietly prevents others from adding templates when you have
finished your page)
- Approximately 200 lines of code (most of which is wasted on
formatting for readability)
- Fundamentals -- the engine I propose is very basic, but this doesn't
mean "un-featured." Considering the way it was written and what it
does, it provides opportunity for subclassing and scalability --
adding filtering or caching (for example) is only a few steps away
(although I realize taking those steps may leads to the aforementioned
problems)
For most large-scaled projects I have worked with, I have never used a
templating application such as Smarty -- usually they were simply too
heavy or too complex. Providing such basic
functionality would allow one to easily add or change functionality
--
-------------
buddhahead@gmail.com