LampCMS technical stuff
Sat Aug 15 2009
LampCMS makes extensive use of SPL
We use PDO class for database access, and use ONLY prepared statements
for all inserts and updates of tables. This adds a tremendous amount of
protection against an sql injection and also
eliminates the need to use the 'old school' addslashes()
We use proven OOP programming 'good practices' and make use of the most
common programming patterns like Singleton method, factory method, good
sub-classing design and composite objects.
Custom exception, type hinting, interfaces, iterators you will find
them all in our CMS. So if you ever wanted to learn these concepts, then
developing with and for Lampcms will definitely
improve your programming skills.
We use built-in php input filtering all input data goes through filters
first, so only clean data reaches our scripts. This also eliminates the
need to run the old-school htmlentities() on
submitted data.
We use php's SimpleXML class to build the output, as well as DOM class
in some cases where SimpleXML just can't handle it. This insures that the
output generated by our engine is always 100%
valid XML!
As a templating engine we chose to use XSLT, making use of php's
libxstl extension.
After trying several templating engines like smarty and
HTML_Template_Sigma
and even writing my own templating engine HTML_Template_Sigma3 (better
OOP rewrite of Sigma),
I just was not satisfied with the speed and amount of functions calls a
templating engine
usually has to make in order to assemble a fairly large web page with
large amount of replacements.
XSTL is a surprisingly fast templating engine and the fact that
it can be used for both browser based
or server based transformation makes it a clear choice for me.
Sure, there is a learning curve for someone who has never used XST
templates before,
but there is a learning curve to any templating engine, be it a popular
Smarty or Flexy
or any other templating engine.
At least XSL is a standard, so once you learn to use it, you can use it
with any other programming language in the future.