Overview
Introduction
This is TiP, a general purpose framework for quickly build a working web site in a typical PHP/MySQL environment. It is targeted at developers, experienced web administrators and anyone unafraid of hacking and using a text editor.
If you want a weblog, an eCommerce site or a wiki platform there are powerful and better open source alternatives to TiP. But if you are a web designer, used to get hands dirty with HTML and CSS stuff, or you find yourself spendig too much time in hacking instead of programming, TiP can be an option... and you can build a weblog, an eCommerce site or a wiki platform using TiP too.
Although today there are a lot of PHP frameworks, when I started developing web sites (2004) the alteratives were not so much. I choosed to use a PEAR based approach and TiP was the glue between the different modules. Since then, it has evolved into a different beast, keeping the original intention under the pear directory.
Features
- Logic and style completely separated
Under the style directory you will never meet a PHP command and under the logic directory you will never meet any HTML tag (with the notable exception of some PEAR packages: patches welcome).
- High flexibility
As a direct consequence of the logic/style separation, the user interface can be whatever you want. To be more specific, TiP is a framework, not a CMS: this means the stuff you found in the style/ directory is a sample implementation of TiP, not TiP itself.
- Modular structure
The need to easily add or remove features is one of the target of this project. The TIP_Module is the brick over which the extension mechanism is built.
- Quick responsiveness
TiP is quick, at least with the default TIP_RcbtNG engine. Also, a sharp use of template compilation and static cache can make a big difference.
Whenever in doubt between different ways, by TiP design the performance MUST win.
- Template and data engine abstraction
TIP_Template_Engine and TIP_Data_Engine abstract classes implement the common methods to access the underlying engines. This helps extending TiP beyond its natural limits, for instance adding support for PostgreSQL (or, better, a PDO-based engine) or using another template engine instead of TIP_RcbtNG.
Drawbacks (AKA TODO)
There is still some room for improvements. These are, in my opinion, the most important improvements needed:
- The data engine is too SQL friendly
It was noticed while implementing a totally different data engine. This task is not easy and the PEAR modules are sucky too. Maybe a good solution would be moving the query logic in the configuration phase: this means supporting queries transparently, that is passing-throught the text of the query from the template source directly to the physical data engine, applying only some basic parameter substitution.
- The tree modular approach is not enough
Some module, such as the TIP_Comments and TIP_Hierarchy, is better expressed as a feature because it is applicable to another existing module. Actually, the incriminated modules have a reference to the master module, but when more complex patterns are required this becames an issue.
The user statistics are a typical example: when a comment is added, either the master module counter and the user counter should be incremented. Actually this has been resolved by adding specific properties, an approach not so elegant and stinking of hackish.
Overview
was last modified by
Nicola
on
Fri 10 Jul 2009 10:15:19 AM CEST