eZ components: New competition for Zend PHP Framework

By | | PHP

Just about a month ago Zend Technologies announced Zend PHP Framework in line with the Zend PHP Collaboration Project with the stated goal to offer a “de facto standard PHP Web application development and deployment environment”. Not much information has been made public by Zend, which caused a lot of discussion. Just here and there, involved persons piped up and delivered more or less useful information tidbits. Currently, Zend is working on a first version while working out the collaboration infrastructure and engagement guidelines.

While Zend is enjoying the attention in the PHP world, eZ systems determinedly worked on a very similar project called eZ components. Let’s have a closer look at what it has to offer and how it compares to Zend’s PHP Framework.

Design

Both projects seem to come as independent, loosely coupled components to reduce dependency, of which each user can choose for himself which ones to use. While eZ components shows no signs of designated application design, the Zcontroller and ZpageController components in Zend PHP Framework could foreshadow some sort of MVC framework.

Components

A list of eZ components can be found right here. Unfortunately it’s hard to compare it to Zend’s PHP Framework since there is only a small directory list available, which dates to October 24th. Nevertheless, first similarities can also be found: Standard components of a framework like database abstraction, exceptions, logging, templating but also input filters can be found in both projects.

Beyond that, Zend’s framework offers a search and a URI component. While I’m still wondering how the former could look like, I’m already hoping for the latter one to be “the one class to rule them all” as answer to our URI problems. eZ, on the other hand, offers a broader set of tools: There are generic components like Cache, Configuration, Template and Translation as well as more concrete tools like Archive, File, Image*, Mail and PhpGenerator.

Zend only offers an implementation of ActiveRecord as database abstraction so far. eZ delivers a similar PersistentObject component, but also a thin database layer on top of PDO and DatabaseSchema to tinker with database schemata. Personally, I’d like to see an additional lightweight ActiveRecord implementation that works without explicit datatype definitions.

For templating, eZ relies on the eZ publish template language, which is very similar to Smarty. It’s not yet known how Zend is going to implement this component. Of course, it would be nice to have free choice on what kind of templating to use.

On the spur of the moment i can think of some additional (though less important) areas that would be nice to have components for:

  • Authentification
  • Web Services
  • RPC
  • Specialized data structures in SQL (ordered lists, sets, trees, etc.)

License

eZ recently switched from a copyleft-style LGPL licence to a more permissive BSD license. This means that it can be used by anyone for any purpose. Zend PHP Framework comes with a “PHP-type of license” which is similar to the BSD license.

Development

Zend’s framework counts on contributions from the community, while eZ components is being developed by the makers of eZ publish. On one hand I can imagine a lot of people wanting to contribute to a framework, as they’re used to with open source. On the other hand we don’t know yet how easy that’s actually going to be for normal users and what obligations there are to fulfill for the Zend PHP Framework. eZ, however, has full control over design and implementation of its framework. This should result in more consistent design and code. After all, they have some talented developers in their ranks and are quite experienced with this kind of work.

Release

A first beta version of eZ components has been released on Monday, November 28th 2005. Supporters of the Zend PHP Framework will have to be patient: Zend is still “setting up the collaboration infrastructure and engagement guidelines”, which won’t be finished until January 2006 according to the official Q&A.

Conclusion

Since Zend Technologies announced its framework quite precipitiously, they had to take some criticism. Contrary to eZ, who refrained from pompous talk and focussed on programming. It paid off as they are now able to steal Zend’s show, which is good for us: eZ raised the bar for delivering a quality PHP framework and forces Zend to match their work.

 

Written By:

Maarten Manders

Maarten is a Web developer studying computer science at the Swiss Federal Institute of Technology (ETH) in Zurich. He enjoys combining PHP with new ideas and proven concepts from different fields of software engineering. Nevertheless, Maarten pays attention to keeping things practical and consistent. He also contributes to the SitePoint Blogs.

Website
>> More Posts By Maarten Manders

 

{ 4 comments }

Ryan Wray December 7, 2005 at 11:49 am

Dean C: The base class is a dependancy, and as such, you will need it. Read this page to get ideas on the dependancies of each component:

http://ez.no/products/ez_components/ez_components_technical_details

ordnas November 29, 2005 at 12:28 pm

eZ components 1.0beta1 have been released, see here for the news announcement: http://ez.no/company/news/ez_components_1_0_beta1

A technical getting started tutorial is available here: http://ez.no/community/articles/an_introduction_to_ez_components

Dean C November 27, 2005 at 8:16 pm

This looks quite interesting. From what I understand these libraries will be distributed based around a base package. The question is, will they be able to be used without the base packaged being compiled. One of the annoying things for me, is that the PEAR packages cannot be used without the PEAR base package :) (Or at least it’s a pain in the ass to try and do)

LinhGB November 27, 2005 at 6:34 pm

I love ezPublish – I reckon it’s the most powerful open source CMS. I’ve always been impressed by their code quality and have learnt a lot from it. Looking forward to checking ezComponents out. This is awesome!

Comments on this entry are closed.

{ 7 trackbacks }