7/21/00 Major new release 0.6 includes several new demos and improved code

Welcome to EnzymeTemplates, the latest, greatest template library for PHP.
Now, the first thing you should know is that this library is the first 
separate library to come out of the Enzyme open-source project. 

For the latest version, and (more importantly) better documentation, please
check out the Enzyme web page:

http://enzyme.sourceforge.net

This code is released under the terms of the GPL. For more information, please
read the LICENSE file.


Why another template library?

EnzymeTemplates are late-binding, database-backed, and object-oriented. Let's
take each of those separately.

1) database-backed
   Unlike other template libraries which require you to explicitly initialize
   your template values using their syntax, EnzymeTemplates automatically
   loads your data out of a database and makes it available to your template
   designer by the same names as the fields in your database. 

   How can we do this? By requiring that you store your data in a properly
   named database schema. You'll learn more about that later, but really
   (trust me) it's very simple. Once you've got your schema up and running
   you'll never have to write a single line of SQL to use EnzymeTemplates.

   Because EnzymeTemplates are based on PHPLIB, they are 100% database-
   independent. 

2) late-binding
   Unlike other template libraries which require you to load all possible data
   values into memory before the template is executed, EnzymeTemplates 
   automatically load data from the database when it is needed. Thus, you
   can have different "themes" for the same database, but (depending on the
   complexity of the theme) have it load different data. Only data that is
   ultimately shown to the end-user is ever loaded from the database.

   How do we do this? By requiring that all data be shown to the user using
   PHP function calls. Most template libraries require you to learn some new
   simple syntax, which is then parsed by the template library. This is not
   such a good idea, since PHP is itself already basically a super speedy
   template library. 

   So, let's say that your template designer wants to show the piece of
   data named "GPA" to your user (hey, we used this system to build resumes
   so that's where the examples come from). Instead of doing something like 
   this in the template:

   <B>GPA: </B><I>@@GPA@@</I>

   You can do something like this:

   <B>GPA: </B><I><? $this->c_show( "GPA" ) ?></I>

   Now, at first this may seem a bit more complicated for your average HTML
   designer. However, it's pretty easy to learn, and (best of all) it looks
   like a special HTML tag to your average HTML editor (GUI or human).

   While we're on the subject, here's a side note you may find interesting.
   The above example can actually be written as:

   <? $this->c_show( "GPA", "<B>GPA: </B><I>", "</I>" ) ?>

   which has the added versatility that it will not show anything if the field
   GPA is NULL (or you can have it display something like "Not Listed" or a
   variety of other customizations - but more on that later!)

3) object-oriented
   EnzymeTemplates creates a complete object-oriented representation of your
   database schema (subject to the late-binding constraint above) in memory.
   This allows you to easily customize every aspect of the template's behaviour
   by simply sub-classing the appropriate classes. You can load additional data
   from another data source, or change the way data is displayed. You can even
   censor data from unauthorized users, using PHPLIB's permissions class.

   Further, even though the code that powers the EnzymeTemplates is pretty 
   ugly, 99% of users will never even have to take a look, since the interface
   to that code is pretty clean. Of course, since it's all open-source, you can
   (and I hope you will) make and contribute any changes you want!

Ready to start hacking? Cool. Now it's time to check out the INSTALL and DEMO 
files, which detail how to install and use EnzymeTemplates, respectively. 

Well, that's it for now, enjoy!

Eric Ries
eries@CatalystRecruiting.com

