Auf der Suche nach dem perfekten PHP Application Framework

Ich habe mich in letzter Zeit etwas nach Frameworks für die Applikationsentwicklung in PHP umgesehen. Hintergrund ist die anstehende Entwicklung einer etwas grösseren Anwendung. Das Framework sollte den MVC-Pattern umsetzen, eventuell Hilfestellungen bei Routine-Tasks geben, aktuell sein (weiterentwickelt werden) und vor allem sollte die verfügbare Dokumentation umfangreich sein.

Nach kurzer Zeit musste ich feststellen, dass die Auswahl sehr gross und unübersichtlich ist. Bisher habe ich mich nicht entschieden. Vielleicht hat der eine odere andere Leser Erfahrungen mit einem dieser Frameworks und möchte sie mit mir teilen? Ausserdem mag ich mit diesem Überblick die Leute unterstützen, die vor einer Ähnlichen Entscheidung stehen.

Es handelt sich hierbei wirklich nur um einen Überblick und keine Bewertung. Es werden die mir bekannten Frameworks mit der Beschreibung von ihrer Webseite verlinkt.

(mehr …)

AJAX PHP File Upload Progress Bar

„One of the few things that I find lacking in PHP is the ability to report the progress of a file upload. This means that file uploads, especially uploads of larger files, can be extremely frustrating for end users when they don’t know if the upload is progressing or if it has stalled or if it has even started. There are two ways around this. One is to patch PHP, Pdoru provides such a patch. Not everyone can patch PHP though. You can’t use a patch if you’re on a shared server, if you want to use ready-made binaries, if you don’t want to risk stability by using a patch or if you just don’t want to have to remember to apply the patch again every time you upgrade PHP. The other option is to use a perl script to receive the file when it’s uploaded. This is the approach used by MegaUpload. MegaUpload is what I have based my solution on, but I have added asynchronous file upload support and an AJAX upload progress bar, instead of the refreshing popup used by MegaUpload.“

AJAX PHP File Upload Progress Bar

AJAX PHP File Upload Progress Bar

Ajaxian: PAJAJ: PHP Asynchronous Javascript and JSON

„A new PHP based Ajax framework put its hat in the ring: PAJAJ.
PAJAJ is a object oriented Ajax framework, created by Gilbert Hyatt, written in PHP5 for development of event driven PHP web applications. The framework follows 5 basic principles:
Simplicity: Everything can be done in PHP.
Various development models:
Developer develops the whole application and interface in PHP
Designer generate a pretty but dump page, and you then hook events to it to make it a real application
You design an interface as a template (example Smarty), and have the framework make html, CSS, Javascript that you pore into the template
Event Driven
Late Binding of Events: no changes need to be made to the HTML themselves
Object Oriented: There are not only objects for the Ajax plumbing, but for page elements that you are interacting with „

Ajaxian: PAJAJ: PHP Asynchronous Javascript and JSON

Ajaxian: PAJAJ: PHP Asynchronous Javascript and JSON

Rasmus Lerdorfs 30 second AJAX Tutorial

Minimal-XMLHttpRequest (AJAX) >Tutorial von Rasmus Lerdorf:

List: php-general
Subject: [PHP] Rasmus‘ 30 second AJAX Tutorial – [was Re: [PHP] AJAX & PHP]
From: Rasmus Lerdorf
Date: 2005-07-21 22:50:56
Message-ID: 42E026D0.3090601 () lerdorf ! com
[Download message RAW]

I find a lot of this AJAX stuff a bit of a hype. Lots of people have
been using similar things long before it became „AJAX“. And it really
isn’t as complicated as a lot of people make it out to be. Here is a
simple example from one of my apps. First the Javascript:

function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == „Microsoft Internet Explorer“){
ro = new ActiveXObject(„Microsoft.XMLHTTP“);
ro = new XMLHttpRequest();
return ro;

var http = createRequestObject();

function sndReq(action) {‚get‘, ‚rpc.php?action=’+action);
http.onreadystatechange = handleResponse;

function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();

if(response.indexOf(‚|‘ != -1)) {
update = response.split(‚|‘);
document.getElementById(update[0]).innerHTML = update[1];

This creates a request object along with a send request and handle
response function. So to actually use it, you could include this js in
your page. Then to make one of these backend requests you would tie it
to something. Like an onclick event or a straight href like this:


That means that when someone clicks on that link what actually happens
is that a backend request to rpc.php?action=foo will be sent.

In rpc.php you might have something like this:

switch($_REQUEST[‚action‘]) {
case ‚foo‘:
/* do something */
echo „foo|foo done“;


Now, look at handleResponse. It parses the „foo|foo done“ string and
splits it on the ‚|‘ and uses whatever is before the ‚|‘ as the dom
element id in your page and the part after as the new innerHTML of that
element. That means if you have a div tag like this in your page:

Once you click on that link, that will dynamically be changed to:

foo done

That’s all there is to it. Everything else is just building on top of
this. Replacing my simple response „id|text“ syntax with a richer XML
format and makine the request much more complicated as well. Before you
blindly install large „AJAX“ libraries, have a go at rolling your own
functionality so you know exactly how it works and you only make it as
complicated as you need. Often you don’t need much more than what I
have shown here.

Expanding this approach a bit to send multiple parameters in the
request, for example, would be really simple. Something like:

function sndReqArg(action,arg) {‚get‘, ‚rpc.php?action=’+action+’&arg=’+arg);
http.onreadystatechange = handleResponse;

And your handleResponse can easily be expanded to do much more
interesting things than just replacing the contents of a div.


Rasmus Lerdorfs 30 second AJAX Tutorial

RunPHP Mediawiki-Extension

Ich bin auf die Idee gekommen, dass es schön wäre, wenn man aus einem Mediawiki-Artikel heraus PHP-Code ausführen könnte. Also habe ich kurzerhand eine kleine Mediawiki-Extension erstellt welche PHP-Code, der in „<php>phpinfo();</php>“ eingebettet ist, ausführt.

Das ganze ist natürlich mehr als ein Sicherheitsrisiko und darf nur in einer wirklich vertrauensvollen Umgebung eingesetzt werden.

Die Extension findet sich auf

Phrame PHP Framework

„What is Phrame?
Phrame is a web development platform for PHP based on the design of Jakarta Struts. Phrame provides your basic Model-View-Controller architecture, and also takes a step further adding standard components such as HashMap?, ArrayList?, Stack, ListIterator?, Object and more… All of this functionality was designed to be as easy as possible to use by developers and designers.
Phrame encourages application architectures based on the „Model2″ approach, a variation of the classic Model-View-Controller (MVC) design paradigm. Phrame provides its own Controller component and integrates with other technologies to provide the Model and the View. For the Model, Phrame can interact with any standard data access technology, including Pear DB/DataObjects?, and ADODB. For the View, Phrame works well with PHP, Smarty Templates, XSLT, Flash MX, and other presentation systems.
Phrame provides an extensible development environment for your application, based on published standards and proven design patterns. Phrame was originally sponsored by the Software Development department of Texas Tech University and is released under the LGPL.
Read about Phrame’s History.“ – PHP Framework; macht einen sauberen Eindruck und gibts schon seit ein paar Jahren

Phrame PHP Framework

Fusebox Framework

„An Overview of Fusebox
Application developers face a daunting task: they must translate the often fuzzily-defined requirements for a new application into the rigid language of computers. While the Fusebox Lifecycle Process (FLiP) offers help in managing the project management aspects of creating a new application, what help is there available to developers approaching the technical challenges of creating and maintaining applications?

Application frameworks answer this question, offering pre-built (and pre-tested) code — a collection of services that can provide the architectural underpinnings for a particular type of application. Web-based applications are increasingly the choice for new application development in which the browser becomes the „universal client“. As web development matures, web-based application frameworks allow the developer to concentrate more on meeting the business needs of the application and less on the „plumbing“ needed to make that application work.

Fusebox is, by far, the most popular and mature web framework available for ColdFusion and PHP developers. The architecture of a Fusebox application is divided into various sections („circuits“ in Fusebox parlance), each of which has a particular focus. For example, the responsiblity for ensuring that only authorized users have access to all or part of the application might fall under a Security circuit.

The Fusebox application architect defines these circuits, as well as the individual actions („fuseactions“) that may be requested of it. When a fuseaction request is made of the application, the Fusebox machinery (the „Fusebox“) routes the request to the appropriate circuit, where the fuseaction is processed. This idea of encapsulation of responsibilities makes it easy for different functional circuits to be „plugged“ into an application, making it possible to reuse code.

Within the individual circuit responsible for carrying out the requested fuseaction, the Fusebox architect specifies the individual files („fuses“) needed to fulfill the fuseaction request. Thus, the Fusebox acts like a good manager, delegating tasks to appropriate departments where it is decomposed into individual tasks, each of which can be assigned to individuals to carry out.“ – Ein weiteres PHP-Framework, welches das MVC-Pattern umsetzt

Fusebox Framework

Fusebox Framework

WASP – Web Application Structure for PHP 5

„What is WASP?
WASP is a powerful web application framework built on PHP 5. Like Ruby on Rails, WASP strives to allow web developers to make great applications with more fun and less code, but in the familiar playground of PHP.
Why use WASP?
WASP was written from the ground up in pure Object Oriented PHP5. WASP fully utilizes all of the enhancements made to PHP in version 5.
This means you use less code to create enterprise class applications.
This isn’t your hacker’s PHP. “ – PHP on Rails

WASP – Web Application Structure for PHP 5

WASP – Web Application Structure for PHP 5