|
|
|
|
Quicknavi |
|
Introduction
1. The genesis of the frameworks
At the beginning of my "web career" I was engaged with creating static HTML web pages. Sites like
drweb.de and
selfhtml.org helped to learn
about the basic rules of HTML and CSS. After getting familiar with the basics I started to build
bigger sites with up to 50 pages and the limitation of static pages appeared to be a problem.
During my school days I tried some programmming with PHP to ease the maintenance of the web pages by
including global parts such as menus, header or footer with PHP functions. After that goal was
reached, the need to add dynamic content arose. Particularly, I got bored of writing scripts every
time I created a new website from the scratch. So I introduced a global function library, that had
all of the common functions used in it (global_functions.php), and began refactoring the so far
written software.
After a while, this concept was at it's conceptual end, too. At this point of time i began to think
about reusable software modules, that can be used in any kind of web project. Thus, I designed a
module description (some kind of "interface") and tools, to aid this concept, to give the ability
to write modules in a common style and to have a particular mechanism to include these modules in
existing web projects. One disadvantage of this plan was the fact, that the source code still has to
be changed to fit a project's design requirements. As a salvation to this problem, I provided a
simple form of separation of functionality and design by introducing a template class. With this
version of the concept I developed a lot of modules, that are still included in web applications
running on different web sites. But the expirience of this periode of tim taught me, that the module
design was not as generic as I wanted it to be. The possibility to use modules in other modules
wasn't comprehended in my design.
During my study - or more precisely - roughly at the end of it, I designed my own DOM model, that gave
the ability to include modules in any place of the GUI. The implementations were now based on
approved object orientated design pattern and I tried to create true reusable software components.
Version 1 of the page controller componente included the features of creating a object tree while
parsing defined XML tags in template files. Each tree node was represented by a PHP class
implementation, that contained the functionality of the tag. Moreover, implementing MVC styled
applications was established by the ability to add a document controller to each node. After another
periode of time, the static tag set was at it's end, too, because there was the need to configure
the XML tags by a generic number of XML/HTML attributes.
The page controller implementation integrated in the framework today is based on a generic XML
parser, that generates the adventure php framework DOM by parsing templates by means
of known tag libs. The set of tag libs can be expanded freely by implementing a new tag lib class
that respects the interface defined ba the framework. This provides a good platform for the
development of generic web applications with complex GUIs.
The current version also features reimplementations of the configuration, benachmarking,
errorhandling and logging tools developed during the last years. Furthermore, all classes were
refactored, documented and tested during 2006/2007 to fit the global concept of the framework.
Now, the adventure php framework forms the basis of a large number of web sites and
applications with database backends.
2. Intension of this documentation page
The development extending over several years can now be concidered a solid platform to efficient
software development for web applications. As I have collected know-how in designing and implementing
web applications and a development framework, I want to spread this knowledge. The pages on this site
contains the documentation of the adventure php framework and many tutorials on
object oriented design and implementation of software. So the page understands itself as a reference
guide as well as a ressource for tutorials.
Comments
Do you want to add a comment to the article above, or do you want to post additional hints? So please click here. Comments already posted can be found below.
There are no comments belonging to this article.
|
|
|
|