HOW TO: Choose a PHP Framework for Your Next Project

framework image

There’s no doubt that web frameworks have exploded in popularity over the past few years, and while it’s likely that a large part of that growth can be attributed to Ruby on Rails, the outpouring of MVC frameworks in other languages is no less impressive.

If you’re a PHP ninja, and not a die-hard Rubyist, you may be wondering what options are out there and which framework is right for you. The answer depends on a number of factors, and today we’ll review the questions you should be asking when choosing a PHP framework for your next application.

We’ll also take a look at popular PHP frameworks and what sets them apart. That way, you can make an informed decision on which framework best suits your project — or if you should even use a framework at all.


Determining Your Needs


Before you can decide on a framework for your project you should first understand its needs, its requirements, and a little about the development team working behind the scenes. There are three main questions to ask yourself before going forward:

  • What’s the primary focus of your application? Will it be an ecommerce business, a social community, a messaging platform or a directory? If you’re building an ecommerce site, for instance, you may want to choose a framework with some baked-in libraries with proven extensions for dealing with credit card processing. On the other hand, a lightweight messaging platform may need to scale very rapidly or use multiple servers and databases for load balancing and faster connectivity.
  • What will your hosting environment be? Some frameworks require additional PHP modules or software installation on the server, which may not be an option in shared hosting environments. Furthermore, a lightweight framework on which everything is self-contained and highly portable may not provide the best functionality for serious data manipulation or large information processing. For example, some frameworks work best with MySQL, while others include libraries for working with key-value and document store databases, for example.
  • What are the strengths and weaknesses of the developer(s)? It’s important to get a sense of the skills and shortcomings of the developer(s) who will actually be building and maintaining the application. Some frameworks are more user-friendly and better for beginners. While the answer to this question probably shouldn’t be a deciding factor (learning new things is good), it is definitely one to take into account given your timeline, budget and security considerations.

The Frameworks


Now that we’ve looked at some of the basic requirements of your application and the dev team behind it, let’s examine some popular PHP frameworks and see what each one has to offer.

Cake PHP

If you still need to write PHP4 compatible code, CakePHP is a great option. This PHP 4 & 5 MVC framework is one of the oldest and most popular on our list. Cake PHP has built up a reputation as a formidable and capable framework. It also has many avenues for support (groups, message boards, IRC) and excellent tutorials. CakePHP is a good framework that’s easy to get into but one that you won’t outgrow in a couple of weeks.

CakePHP’s conventions are fairly strict, however, and it’s not the most flexible framework available. This could be a plus if you want to guarantee consistency across the application regardless of the user. There are also built-in tools for unit testing, XML-RPC and feed parsing for integration with web services as well as scaffolding for rapid prototyping.

Zend Framework

The Zend Framework is for more experienced developers and those building enterprise-level applications. The framework is highly modular, meaning you can use as little or as much of the Zend code as you need. Several libraries can easily be extracted for stand-alone use. With Zend, you’re not tied to the MVC pattern (though it is certainly an option), and there is a lot of built-in support for tasks such as integration with existing web services, localization and extensive unit testing.

Zend requires PHP 5.1.4+ but has multiple configuration options and excellent documentation. It’s a framework with corporate backing and a strong community. You’ll get long-term stability and fairly quick integration of new features, not to mention security updates tested by a team of professionals. While the Zend framework may be a large overhead for small projects, if you’re building large-scale applications it is typically considered the framework of choice.

CodeIgniter

CodeIgniter is (as of v2.0) a PHP5.2+ MVC framework with a small footprint and great documentation. Often called a “beginner” framework because of its relative ease of use and short learning curve, CodeIgniter is nonetheless flexible and powerful. The framework has a large community surrounding it, so it’s fairly easy to find an existing CI library for just about anything you could dream up. If you need to do it, chances are, someone out there already has.

CodeIgniter is best suited for content sites and small-to-medium web applications. You’ll likely see a performance drop with very large numbers, but there is some built-in caching to help with that. If you’re new to PHP frameworks or want something that can be picked up and learned in a few hours, CodeIgniter is one of the top frameworks to consider.

Symfony

Symfony is one of the oldest PHP frameworks, and is designed for enterprise-level web applications. For all its power and performance, however, Symfony has a small footprint and is easy to configure on a variety of PHP hosting environments. Since it’s been around for so long, you’ll find a lot of tutorials and books available on framework use, a perk for new users.

Symfony uses command line generators for quick project setups and automatic code generation, which may be new to some developers. However, they allow you to get up and running with your code in very short order. If you feel intimidated by this, don’t worry. The Symfony’s web site has a large collection of tutorials, showcase applications and screencasts to get you going.

The framework has all of the advanced features you’d expect of a system designed for the development of enterprise software. For example, it offers internationalization, URL routing, test suites, a robust templating engine and a powerful plug-in API for extending Symfony’s features, or adding your own.

Kohana

Kohana began as a fork of CodeIgniter, though it’s much more than a simple branch off. Like CI, Kohana strives to be a lightweight, easy-to-use framework that performs well for small-to-medium web applications and custom content management systems.

Unlike CodeIgniter, Kohana requires PHP 5.3. The developers have taken advantage of this by including some advanced functionality not present in Codeigniter. The 5.3 requirement also means less code can accomplish some of the same tasks with less concern over backwards comparability. While Kohana’s documentation is a little lacking, it tends to implement features more cleanly. The community is active, so getting help shouldn’t be an issue.

Yii

Yii is a highly modular, high-performance PHP5 framework designed specifically for developing web applications. Yii uses a lot of command line generators and tools to get you up and running quickly; therefore, it’s best used by people that aren’t intimidated by a terminal window. All those generators mean more commands to memorize, but once you do, you’ll find that they greatly decrease the time it takes to set up and configure your application.

It’s easy to extend Yii and add in your favorite third-party libraries. Yii also supports templating, themes and widgets, and includes tools for testing, libraries for internationalization and web service integration. Yii’s performance is good and the automatic code generation makes it a great framework for rapid development. The framework is well-documented, but since so much of the work is done at the command line, it can be intimidating to some users.


Image courtesy of Flickr, baldiri

More About: dev & design, framework, php, php framework, web, Web Development

For more Dev & Design coverage:

This entry was posted in Channels, contributor, dev & design, features, framework, php, php framework, web, Web Design, Web Development and tagged , , , , , , , , , . Bookmark the permalink.