Regarding PHP templates, it is indeed easier said than done. There are probably more than 20 choices at random, and pear alone contains 5 different templates, which is really a headache.
Don't just follow others' opinions and say this one is good and that one is bad. Before choosing a template, you'd better first understand what the real purpose of the template is? Simply put, the core purpose of a template is a team work. There are two main ways of functioning:
1. Separating HTML and PHP makes the cooperation between web designers and PHP programmers more pleasant.
2. Separating display logic and transaction logic makes it easier and more flexible to change core transaction logic and expand applications, which means it makes cooperation between programmers more pleasant. (This point is often overlooked or misunderstood by people. They always think that taking PHP out of HTML is called separating display logic and transaction logic. If this is the case, why bother mixing PHP and HTML in the first place?)
Find out the real purpose of this template What it is, it will be easier to make the right choice.
If you are the only PHP programmer but need to work together with other web designers, then choose a template that can separate HTML and PHP, phplib (now seems to be integrated into Pear http://pear.php.net /package/HTML_Template_PHPLIB ) or
FastTemplate is something like this, very simple and easy to use.
If your website interface is ugly and is mainly completed by programmers, but the functions are more complex and require powerful extension functions, and you need to separate various levels including display logic, then don't use anything special, PHP itself is the best template . It should be noted that in this case, you have to design your program very carefully, and always remember to separate not PHP and html, but business logic and presentation logic. This is why I have always been very resistant to things like Smarty, because the syntax of Smarty is too complex and powerful, almost reinventing a scripting language (even PHP programmers have to relearn it). What's even more puzzling is that the more powerful this script is, the easier it is for people to mix business logic and presentation logic, destroying the original intention of the template.
If you want to separate HTML and PHP and get a better visual design, but also want the entire system to have very powerful expansion capabilities that can adapt to various interfaces of html, xml, and wml without having to learn complex syntax while providing a higher level of Operational efficiency, then this is a quite challenging issue. The bad news is that there is currently no mature template that can really meet such requirements. The good news is that it is not difficult to complete such a template. If you try Zope or ColdFusion, you will find the shadow of this template.
(wact http://wact.sourceforge.net/ and phptal http://phptal.sourceforge.net/ are developing in this direction and should be very promising).
There are two main ways to combine templates and data (template calling): push method and pull method.
The way of pushing is to use PHP to push data to the template, which means that the programmer needs to explicitly assign a value to each variable in the template and tie them up.
The pulling method is like mixing php and html. The variables in the template actively pull in the data.
Speaking of templates, we have to mention two other things:
phphtmllib and quickform ( http://pear.php.net/package/HTML_QuickForm ). These two things use traditional methods to complete HTML through various page components. The structure of the entire page is completely in the hands of the programmer. Perhaps many programmers who have written traditional GUI desktop programs prefer this method.
A more beautiful solution
If you are making commercial software, Flash should be a more beautiful solution (don’t get me wrong, don’t think that just because you know that PHP supports ming and swf libraries can dynamically generate Flash, that’s not what I’m talking about.) What I want to say It is a solution that supports Flash Remoting. This kind of thing is the truly meaningful combination of PHP and flash. The visual designer completes the flash part, and the PHP programmer sends the data to the client made of flash through flash remoting.
There are currently two solutions:
AMFPHP
Since Macromedia Flash Remoting uses a unique and more efficient data format when transmitting data, AMFPHP constructs the corresponding data format on the server side by analyzing the data format. PHP class to receive, parse and encode these data to achieve the function of exchanging information (just like Samba, it should be a kind of Hacking).
PHPObject
http://ghostwire.com/resources/phpobject/
PHPObject uses another method to transmit data through open format soap by embedding some actionscript components in flash.
In fact, there are many other issues involved in PHP templates, and I can only write so much in a while.