Web development frameworks

CakePHP, CodeIgniter, Symphony, and Zend are popular Web development frameworks. What do they do? When do you use them? Here is the Who, What, When, Where, Why, and How of Web development frameworks.

Who

Name some frameworks. CakePHP, CodeIgniter, Symphony, and Zend. Who uses them?

CakePHP

I looked at the CakePHP brag list and only one one small Mozilla site appeared to be of any importance. I did not find any aspect of any site that could not be created easily using any of the major content management systems. Some of the major features of the sites did not work reliably or consistently, indicating a CakePHP site does not automatically get reliable or tested code.

CakePHP is still stuck in PHP version 4 at a time when PHP is close to moving from version 5 to version 6.

CodeIgniter

CodeIgniter has a better Web site for anyone looking through frameworks trying to work out what the frameworks do. CodeIgniter promise fast performance and many of the sites on their brag list had slow performance. CodeIgniter is still stuck in PHP version 4 at a time when PHP is close to moving from version 5 to version 6.

Do you know of a CodeIgniter web site demonstrating something you would not get through any other framework or a decent CMS?

Kohana

Download Kohana from kohanaframework.org. Kohana is an interesting framework with a lot of good ideas and it has at least one big user. The code appears to be overly complex. There are not many examples online. Some show difficult Java style coding, the sort of thing that makes Java projects take three times longer than PHP based projects.

Simplicity of coding makes extensions easier and more reliable because you know what the code will do when you write it. There are some complexities you add to stop add-on modules damaging the base system and data. Kohana adds those complexities plus Kohana adds other complexities that appear to be there only for style. When you are stuck with Java, you have to perform some simple tasks in complex ways because you are restricted to working with objects. PHP provides simpler mechanisms for simpler tasks but Kohana appears to emulate the complex Java approach, wasting processing time, and making coding harder.

Kohana examples and tutorials frequently show functions placed in classes then used as stand alone functions. You could simplify Kohana by coding functions as functions instead of artificially adding them to classes.

Do you use the PHP PEAR libraries to build whole Web sites? You might find Kohana the better choice because of better integration and easier installation. The learning curve could be higher because Kohana documentation is limited.

Sapphire

Sapphire is the framework within SilverStripe. You can use Sapphire without SilverStripe but the documentation is almost non existent. You have to install SilverStripe to see how Sapphire works.

Symfony

Symfony claims to be the most popular framework. Symfony is up to date with PHP, placing it ahead of CakePHP and CodeIgniter.

Zend Framework

Zend produce several PHP related products and used together, they make sense. Their Zend Framework is probably the least useful of the lot. Fox use Zend Framework for several large sites. Back when Fox started on those sites, the Zend Framework offered flexibility and performance they could use across many related sites. A development time and cost comparison today would not be so clear cut.

What

Frameworks provide a set of PHP classes and some sort of starter set of code to get you up and running. You then add your own code plus sets of additional downloadable code libraries or modules. There is a lot of work to do before you get to the equivalent of a basic Content Management System to run your first Web site.

I followed the CakePHP documentation for starting to build a Web site. The initial steps reminded be of CMSs from 5 years ago. Once you use a good CMS, you will find it hard to step back so many years.

When

Very large sites benefit from the extreme optimisation you might be able to achieve a framework. If you use one Web server, a framework will not save you the extra cost of development. A Web site running across several servers can be optimised using many different techniques and all those techniques are usable with good modern CMSs. A framework starts to give you useful savings when you use many servers, dozens or more, and expect to expand rapidly.

Four years ago when some of today's big sites were on the drawing board, CMSs had performance overheads limiting their large scale expansion. The leading CMS, Drupal, has rapidly improved performance and flexibility. Where you might have used a framework for a site running on 5 servers, you would now keep using a CMS up to 10 or 20 servers.

Today the servers are also several times faster. If a few years ago you had a site on 5 servers and were looking at 20 servers today, the increase in server speed might mean you are still on only 5 servers.

Where

Geographical dispersion of sites does not need a framework because a good CMS handles geography, multiple languages, non Latin characters, and right to left text presentation. There is no need to move away from a CMS based on location.

In some countries where hardware is really expensive compared to the revenue earned from a Web site and programming labour is really cheap, you might consider trimming hardware costs by using a framework and keeping your Web site lean. In most cases you are better off using a good CMS to quickly give you extra features to increase the revenue earned.

Why

Using a framework is similar to a decision to use Java instead of PHP. Some people have limited knowledge of the best approach and recommend only what they learned in school. Some developers realise Java requires more developers than PHP and recommend Java to create job security. If their boss is too smart to use Java, they recommend a framework ahead of a CMS because a framework creates more development work.

You have to invest a lot of money, time, and people into a framework based project to get to the same place you would arrive at months earlier with a good CMS. After you reach that point, you might have a chance to save something through a framework that is not as easy with a CMS. To make that decision, you need a lot of experience with the framework and the add on libraries for the framework. You need a big project to make significant savings by trimming little bits of the result using a framework instead of a CMS.

If your big project has a long development time, there is the real possibility that the leading CMSs will gain all the features you want before you can develop the equivalent using a framework.

How

You set up a Web server or a hosting account for your framework exactly the same as you would for a CMS based Web site. Almost everything is exactly the same. You would use Symphony or Zend Framework because CakePHP and CodeIgniter are stuck back in PHP 4. You follow an installation procedure that is a manual equivalent to the automated Drupal installation.

Other approaches

RadPHP is commercial and a development environment, not a framework. RadPHP talks about a framework. The framework appears to be pre built selectable modules that work together similar to a framework. Think of Zend Studio supplied with the Zend framework pre installed. The problem is spending AU$400 on RadPHP then finding out your customer uses a different framework.

Zend Studio is a set of development and debugging tools. Zend also have a framework competing against PHP PEAR library of pre built code. Zend keep the two separate so you can use the framework without the other tools. When you do put them together, they work together as a nice combination. You can also use Zend Studio with another framework.

Eclipse is a big development environment where you can plug in a lot of bits for project management, code editing, and other things. You can plug the Zend editor into Eclipse and use the Zend framework, or a different framework, on your next project. I have not tried this and I welcome feedback if you have tried it, Eclipse is project oriented and a project can contain a lot of settings, possibly with the option to assign a different framework to each project, giving you the ability to manage a team working on several projects with different frameworks for each project.

Conclusion

Content management systems make Web site development easier than using a framework and there are times when you want more flexibility or performance. Big media companies use frameworks for a few high traffic sites and the Drupal CMS or equivalent for all their other sites. Based on over 200 projects, a framework beats a CMS in less than 10 cases and usually when you want to use a mixture of databases.

Further reading