10 Reasons Why Zend Framework is a Mature Choice

Zend Framework, one of the big frameworks today. Is it the right choice, is it the wrong choice? We believe it’s one of the right choices for professional PHP development. Here’s 10 reasons why!


Modular Architecture

As mentioned in our earlier post, “Zend Framework - 10 Must Dos”, modules allow for a very well laid out and logical approach to development of your application. The help guide, or enforce, depending on your point of view, you and your team down a specific path when designing and developing. It is a bit to get used to, but very clear to maintain – when done right.

Guides Your Development Approach

As we touched on in our last point with modules, the framework guides you in a clear, well laid out path to development. But it goes beyond modules, into FrontController plugins, class naming and to the choice of basing the coding convention on the popular PEAR standard – with some modifications.

Follows mature coding and naming conventions

Taking the much refined PEAR coding standard and making some adjustments, by coding against the standard, you and your team are coding against a standard that is well known and well understood. When followed, there’s a clear, consistent and mature convention to follow. Now a coding standard on its own doesn’t a project make, but it’s definitely a professional point to have.

Encourages testing

Through default projects created with zf(.sh|bat), from the very start there is clear encouragement to build tests along with the code. Whether you’re using a TDD, approach or one of the many others, Zend Framework makes use of PHPUnit, an professional and reliable tool to build and manage the projects tests.

Supportive developers

I have not personally asked a lot of questions of Matthew Weier O’Phinney, or Rob Allen, but when I have the questions have been answered reasonably quickly and always with an educated and professional tone. In addition, the IRC channel on #freenode provides a wealth of helpful and knowledgeable developers. Then there are the developers in the wider community contributing modules and library extensions. They are often helpful and very resourceful and knowledgeable.

Available documentation

Having a quick browse of the Zend Framework Manual and API online shows the wealth of information on offer. Though not always correct and sometimes the subject of some contention, it does contain an enormous amount of information about both the api and how to implement it, along with why some of the decisions were taken.

Continuous development

Like any good software project, it is under intense and active development. Up to version 1.10.1 at the time of writing, version 2 is rapidly approaching.

Formal bug resolution process

Through the Jira bug manager, the entire development community can see if there are issues, know if they have a resolution and potentially when. Jira is a quality tool used by a number of projects and companies. During the development of one of our projects I was able to use it to investigate an issue quickly and effectively, saving time and effort.

Pluggable architecture

When an extension library is coded against the framework coding convention, it’s trivial to integrate it with your existing project. I had this experience when I was looking for libraries to interact with CouchDB and MongoDB (insert links to projects). I found the Phly_Couch library by Matthew Weier O’Phinney and the Shanty_Mongo library by Coen Hyde. All that was required to use them was to drop them in to the project library directory and then enable them as an autoloader namespace. Simple and no time wasted.

Take at will libraries

Though the framework provides a MVC component, you don’t need to use it. You can integrate one or several of the libraries with your existing framework or codebase; whether that’s Yii, Kohana, CodeIgniter or home-brewed MVC framework. Maybe you just have a need for interacting with Google, well there’s Zend_GData, maybe you need to interact with CouchDB or MongoDB, well there’s Phly_Couch and Shanty_Mongo. Maybe you need some pagination, there’s Zend_Paginator combined with Zend_Cache

Do you agree or disagree?


You might also be interested in these tutorials too...

Tue, Nov 15, 2011

Rename uploaded files with Zend Framework

Recently I was asked how to rename a file with the Zend Framework that used a Zend Form and Zend File element. They key requirement was that it should not be a hack or a kludged solution. So I thought I’d write a quick post to provide a simple example on how it was achieved.

Wed, Nov 9, 2011

The Zend Framework Bootstrap made simple (Part 3)

Ok, we’ve established that with the Zend Framework, we need to do a bit more work than some of the other frameworks to get up to speed - but that’s not necessarily a bad thing - right?! But it can be a bit tedious and it’s something as professional developers, we want to automate away. So we’ve been addressing in this series how to do just that with a custom, extendable bootstrap class.

In the first part of the series we laid the foundation of our custom bootstrap class by creating a custom class directory structure, adding its namespace to the application ini and modifying the default application bootstrap so that it extends from it and had a look at the first component - caching.

Then, in the second part of the series, we built on the foundation laid in part one by creating plugin resources for the routing table, application navigation and the database connections - these being some of the most common tasks, usually, associated with a web-based application.

In this, the third and final part of the series, I’m going to finish up by looking at application placeholders and surprise, no not logging as originally promised, but pagination. As an added extra, we’re going to be using a key feature of Zend Application to make it a breeze.

Wed, Nov 2, 2011

The Zend Framework Bootstrap made simple (Part 2)

In the first part of the series, you’ll remember that we laid the foundation of our custom bootstrap class by creating a custom class directory structure, adding its namespace to the application ini and creating our custom bootstrap file that our application bootstrap will extend from.

After we did that, we put in the first but arguably the most important plugin resource – caching and stored it in the application registry. In this post we’re going to be building on that work and adding in three new plugin resources: routing, navigation and databases.


Want more tutorials like this?

If so, enter your email address in the field below and click subscribe.

You can unsubscribe at any time by clicking the link in the footer of the emails you'll receive. Here's my privacy policy, if you'd like to know more. I use Mailchimp to send emails. You can learn more about their privacy practices here.

Join the discussion

comments powered by Disqus