<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code Hangover &#187; php</title>
	<atom:link href="http://blog.codehangover.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.codehangover.com</link>
	<description>Go ahead, have another</description>
	<lastBuildDate>Tue, 22 Mar 2011 15:49:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Framework Comparison</title>
		<link>http://blog.codehangover.com/php-framework-comparison/</link>
		<comments>http://blog.codehangover.com/php-framework-comparison/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 03:37:18 +0000</pubDate>
		<dc:creator>Welzie</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://blog.codehangover.com/?p=61</guid>
		<description><![CDATA[Yes this is yet another PHP Framework comparison. A few months back I was trying to decide which PHP framework to use on a project. I wanted to use a currently popular framework because that way I would get the best support from the devoted contributors and users. Choosing a popular or active project is important when dealing with open source tools.]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.codehangover.com/php-framework-comparison/";</script><p>Yes this is yet another PHP Framework comparison.  A few months back I was trying to decide which PHP framework to use on a project.  I wanted to use a currently popular framework because that way I would get the best support from the devoted contributors and users.  Choosing a popular or active project is important when dealing with open source tools.</p>
<p>From my research I found that <a href="http://cakephp.org/">cakePHP</a>, <a href="http://framework.zend.com/">Zend Framework</a>, and <a href="http://codeigniter.com/">codeIgniter</a> are currently the most popular PHP frameworks.  Below are my notes and thoughts about of each framework.</p>
<p>Some of this will only make since if you are familiar with MVC frameworks, if you are not read this first <a href="http://en.wikipedia.org/wiki/Model-view-controller" target="_blank">http://en.wikipedia.org/wiki/Model-view-controller</a></p>
<h3>cakePHP</h3>
<p><a href="http://cakephp.org/">http://cakephp.org/</a></p>
<h4>Google results</h4>
<ul>
<li>4.75 million (term: cakephp)</li>
</ul>
<h4>Books</h4>
<ul>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FBeginning%2520CakePHP%2520Novice%2520to%2520Professional%2Fdp%2F1430209771&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Beginning CakePHP Novice Professional</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FPractical-CakePHP-Projects%2Fdp%2F143021578X&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Practical CakePHP Projects</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FCakePHP-Application-Development-Step-step%2Fdp%2F1847193897&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">CakePHP Application Development Step by step</a>
</li>
</ul>
<div>
<div style="width: 84px; height: 110px; float: left; padding-right: 15px;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FBeginning%2520CakePHP%2520Novice%2520to%2520Professional%2Fdp%2F1430209771&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img24.imageshack.us/img24/2945/begcakephp.jpg"/><br />
</a>
</div>
<div style="width: 84px; height: 110px; float: left; padding-right: 15px;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FPractical-CakePHP-Projects%2Fdp%2F143021578X&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img14.imageshack.us/img14/2558/praccakephpproj.jpg"/><br />
</a>
</div>
<div style="width: 84px; height: 110px; float: left;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FCakePHP-Application-Development-Step-step%2Fdp%2F1847193897&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img9.imageshack.us/img9/1376/cakephppackt.jpg"/><br />
</a>
</div>
</div>
<div style="clear: both; height: 5px;"></div>
<h4 >Mailing List/Forum Activity</h4>
<ul>
<li>Mailing list is a google group: http://groups.google.com/group/cake-php?pli=1</li>
<li>seems to very active with around 2k posts a month.  More details here <a href="http://groups.google.com/group/cake-php/about">http://groups.google.com/group/cake-php/about</a></li>
</ul>
<h4>Pros</h4>
<ul>
<li>CoC type development</li>
<li>Has a scaffolding option that allows you to test your basic database and model design without having to create a single view.</li>
<li>Model relationship management.  CakePHP has built in functionality to automatically load arrays of related model entities based on your model and database design.  These are stored in model propeties named $belongsTo, $hasMany, and $belongsToAndHasMany.  You can even control if cakePHP should load the related models, in case there is instance you don&#8217;t them.</li>
<li>Automated code creation with bake script.  The bake script generates controller methods, models, and even views.  You can then edit them to learn more about how to use cake correctly.</li>
<li>Focus is to keep the controllers light by having most of the functionality in the model or in something called a behavior which could be seen as a simple service layer</li>
</ul>
<h4>Cons</h4>
<ul>
<li>I find the layout of the actual cakephp.org site confusing.  For example the main menu has two items that at first glance I have no idea what they mean Bakery and Forge.</li>
<li>Very array based.  Which not really a bad thing most PHP frameworks and applications are array based.  When possible I would rather use objects instead of arrays.  Defined methods and properties can make coding a lot easier.</li>
</ul>
<h4>Notes</h4>
<ul>
<li>Can be used by a novice or veteran PHP developer.  Very similar to CodeIgniter.  Very different from ZendFramework.</li>
</ul>
<h3>Zend Framework</h3>
<p><a href="http://framework.zend.com/">http://framework.zend.com/</a></p>
<h4>Google results</h4>
<ul>
<li>4.63 million google results &#8211; (term: “zend framework”)</li>
</ul>
<h4>Books</h4>
<ul>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FZend-Framework-Action-Rob-Allen%2Fdp%2F1933988320&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Zend Framework In Action</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Farchitects-Guide-Programming-Zend-Framework%2Fdp%2F0973862157&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Architects Guide to Programming Zend Framework</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FZend-Framework-Official-Programmer-Reference%2Fdp%2F1430219068%2F&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Zend Framework Official Programmer Reference</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FBeginning-Zend-Framework-Armando-Padilla%2Fdp%2F1430218258&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Beginning Zend Framework</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FPro-Zend-Framework-CMS-Building%2Fdp%2F1430218797&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Pro Zend Framework CMS Building</a>
</li>
</ul>
<div>
<div style="width: 84px; height: 110px; float: left; padding-right: 15px;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FBeginning-Zend-Framework-Armando-Padilla%2Fdp%2F1430218258&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img9.imageshack.us/img9/6317/zfapress.jpg"/><br />
</a>
</div>
<div style="width: 84px; height: 110px; float: left; padding-right: 15px;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FZend-Framework-Action-Rob-Allen%2Fdp%2F1933988320&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img11.imageshack.us/img11/3317/zfinaction.jpg"/><br />
</a>
</div>
<div style="width: 84px; height: 110px; float: left;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Farchitects-Guide-Programming-Zend-Framework%2Fdp%2F0973862157&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img11.imageshack.us/img11/7247/guidezf.jpg"/><br />
</a>
</div>
</div>
<div style="clear: both; height: 5px;"></div>
<h4>Mailing List/Forum Activity</h4>
<ul>
<li>Moderately active.  Couldn&#8217;t tell exactly how active because the archive does not show dates</li>
<li><a href="http://framework.zend.com/wiki/display/ZFDEV/Mailing+Lists">http://framework.zend.com/wiki/display/ZFDEV/Mailing+Lists</a></li>
</ul>
<h4>Pros</h4>
<ul>
<li>requires PHP 5.1.4 or newer.  To me this is a pro because it forces you to use PHP5 which is more object oriented.  Some may see this as a con.</li>
<li>can pick and choose which features you want to use.  A more open development path.  Which is good for experienced developers.</li>
</ul>
<h4>Cons</h4>
<ul>
<li>Doesn&#8217;t seem to follow <a href="http://en.wikipedia.org/wiki/Convention_over_configuration">CoC</a> as much as cakePHP or CI<br />
too much &#8220;just because&#8221; configuration.</li>
</ul>
<h4>Notes</h4>
<ul>
<li>More for a veteran PHP developer.  Very different from CakePHP and<br />
CodeIgniter<br />
I would definitely buy a book to help evaluate this framework fully.</li>
</ul>
<h3>CodeIgniter</h3>
<p><a href="http://codeigniter.com/">http://codeigniter.com/</a></p>
<h4>Google results</h4>
<ul>
<li>714k google results &#8211; (term: codeigniter)</li>
</ul>
<h4>Books</h4>
<ul>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FProfessional-CodeIgniter-Thomas-Myer%2Fdp%2F0470282452&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Professional CodeIgniter</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FPractical-CodeIgniter-Projects-Building-ndash%2Fdp%2F1430218851&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Practical CodeIgniter Projects Building</a>
</li>
<li><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FCreating-Microsite-Manager-CodeIgniter-Briefs%2Fdp%2FB001I1FFUA&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Creating Microsite Manager with CodeIgniter</a>
</li>
</ul>
<div>
<div style="width: 84px; height: 110px; float: left; padding-right: 15px;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FProfessional-CodeIgniter-Thomas-Myer%2Fdp%2F0470282452&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img10.imageshack.us/img10/9040/profci.jpg"/><br />
</a>
</div>
<div style="width: 84px; height: 110px; float: left; padding-right: 15px;">
<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FPractical-CodeIgniter-Projects-Building-ndash%2Fdp%2F1430218851&#038;tag=1410softwarec-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325"><br />
<img style="border: none; margin: 0px; padding: 0px;" src="http://img9.imageshack.us/img9/3808/pracci2.jpg"/><br />
</a>
</div>
</div>
<div style="clear: both; height: 5px;"></div>
<h4>Mailing List/Forum Activity</h4>
<ul>
<li>Very active.<br />
<a href="http://codeigniter.com/forums/">http://codeigniter.com/forums/</a></li>
</ul>
<h4>Pros</h4>
<ul>
<li>the manual/tutorial is excellent</li>
<li>concise framework that allows u to get started very quickly</li>
</ul>
<h4>Cons</h4>
<ul>
<li>Did not come with .htaccess file (problem for people new to apache)</li>
<li>A lot of duplication in the controllers.  A controller heavy framework</li>
</ul>
<h4>Notes</h4>
<ul>
<li>Can be used be a novice or veteran PHP developer.  Very similar to CakePHP.  Very different than Zend Framework.</li>
</ul>
<h3>Related Posts</h3>
<ul class="related_post">
<li><a href="http://blog.codehangover.com/spring-patterns-best-practices-and-design-strategies-book-review/" title="Spring Patterns: Best Practices and Design Strategies Book Review">Spring Patterns: Best Practices and Design Strategies Book Review</a></li>
<li><a href="http://blog.codehangover.com/asp-net-mvc-musings-and-book-review/" title="ASP.Net MVC Book Review and musings">ASP.Net MVC Book Review and musings</a></li>
</ul>
<script>var dzone_style="2";</script><script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.codehangover.com%2Fphp-framework-comparison%2F&amp;linkname=PHP%20Framework%20Comparison"><img src="http://blog.codehangover.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.codehangover.com/php-framework-comparison/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

