Fabulous PHP frameworks: Qcodo, Lithium, Seagull, and Yii

Alternative PHP frameworks offer such advantages as code generation, prebuilt modules, and application performance

Become An Insider


The lesser-known Qcodo, Yii, Seagull, and Lithium PHP frameworks may not be as extensive as Zend Framework and Symfony or as approachable as CakePHP and CodeIgniter, but they have other virtues to recommend them. Qcodo's command-line tools -- used to jump-start an application -- perform actual code generation from the database model. Unlike applications built from the other frameworks, Qcodo applications do not rely on PHP introspection at runtime and, thus, enjoy a performance boost. Both Yii and Seagull are large-footprint PHP frameworks. Yii excels at building database-centric Web applications, while Seagull boasts an extensive collection of prebuilt application components. Finally, minimalist Web developers will be attracted to Lithium's lean lines and ultrasmall footprint. Like Symfony, Lithium relies on other PHP open source technologies that its engineers have harvested from around the Web.

The Qcodo PHP framework requires at least PHP version 5.1.2. While most other frameworks use runtime reflection as the underlying mechanism for creating data-access classes, Qcodo uses code generation. It will read the database and not only create the classes for modeling your data, but also generate the presentation code (HTML and PHP) for performing the fundamental CRUD (create, read, update, delete) operations on your database. Qcodo builds actual source code, so it executes prior to runtime (among other things), gaining a performance benefit as a result. In addition, Qcodo keeps the data-access code separate from any customization code you might generate. Should you modify your data model and regenerate the data access classes, your customization code isn't obliterated.

Qcodo also provides an event-driven view system called Qforms. As its name implies, Qforms' primary use is for building data-entry pages. Its real magic is that it lets you employ HTML form elements as though they were JavaScript widgets. For example, you define a button and its text property with code like:

$this->btnButton = new QButton($this);
$this->btnButton->Text = 'Button Label';

To continue reading this article register now