<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>H3RALD: Rails-inspired PHP frameworks</title>
    <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Fabio Cevasco's Writings</description>
    <item>
      <title>Rails-inspired PHP frameworks</title>
      <description>&lt;p&gt;There are various articles online examining many &lt;span class="caps"&gt;PHP&lt;/span&gt; frameworks, providing short reviews or comparative charts, but I could not find yet an article examining the so called &lt;em&gt;&amp;#8220;Rails-inspired frameworks&amp;#8221;&lt;/em&gt; anywhere on the web, so I decided to write my own&amp;#8230;&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;IMPORTANT UPDATE&lt;/span&gt;:&lt;/strong&gt; I do no longer recommend the CakePHP framework anymore due to the &lt;a href="http://www.h3rald.com/blog/42"&gt;unprofessionalism of some member of its development team&lt;/a&gt;. My site is now powered by Ruby on Rails and I totally lost interest in &lt;span class="caps"&gt;PHP&lt;/span&gt; and any &lt;span class="caps"&gt;PHP&lt;/span&gt; framework. If you are looking for a decent web framework, try &lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; (for Ruby), &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; (for Python) or &lt;a href="http://catalyst.perl.org/"&gt;Catalyst&lt;/a&gt; (for Perl).&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I&amp;#8217;m talking about those &lt;span class="caps"&gt;PHP&lt;/span&gt; frameworks who give at least part of their success to Ruby on Rails&lt;sup&gt;&lt;a href="#fn2"&gt;2&lt;/a&gt;&lt;/sup&gt;, but don&amp;#8217;t call them &lt;em&gt;clones&lt;/em&gt; or &lt;em&gt;ports&lt;/em&gt; as some of their creators may get offended.&lt;/p&gt;


	&lt;p style="float:left"&gt;&lt;img src="http://www.h3rald.com/img/pictures/rails.gif" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Since Rails shocked the world with an easy-to-use, powerful and semi-sentient web development framework, web development is not the same anymore: everything must be done efficiently, quickly and you &lt;em&gt;have&lt;/em&gt; to produce a Web 2.0 compliant public beta after X days/weeks/months or your work is simply not useful to anybody. Try doing that with the traditional &lt;span class="caps"&gt;PHP&lt;/span&gt; spaghetti code: you can&amp;#8217;t, it&amp;#8217;s too much, it will be too tangled up and in the end you&amp;#8217;ll lose your mind trying to find that &lt;em&gt;small insignificant bug&lt;/em&gt; which makes your web application completely useless.&lt;/p&gt;


	&lt;p&gt;Yes, you could use Rails, but maybe you don&amp;#8217;t know or don&amp;#8217;t want to learn Ruby, your host doesn&amp;#8217;t support it, your boss loves &lt;span class="caps"&gt;PHP&lt;/span&gt; etc. etc. If you&amp;#8217;re in this situation or you simply would like to know what&amp;#8217;s going on at the &lt;span class="caps"&gt;PHP&lt;/span&gt; front of the Rails Clone War, you should keep reading this article.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d like to introduce &amp;#8211; briefly &amp;#8211; six Rails-inspired &lt;span class="caps"&gt;PHP&lt;/span&gt; frameworks and compare them with each other, to point out their features, their pros and cons.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I&amp;#8217;m a CakePHP&lt;sup&gt;&lt;a href="#fn3"&gt;3&lt;/a&gt;&lt;/sup&gt; fan, this site has been built with CakePHP and I even wrote something&lt;sup&gt;&lt;a href="#fn4"&gt;4&lt;/a&gt;&lt;/sup&gt; about it in the past. This makes me inevitably partial and more familiar with this particular framework, but I&amp;#8217;ll try my very best to provide a relatively objective analysis. Obviously frameworks which are not based on the &lt;span class="caps"&gt;MVC&lt;/span&gt; architechture and that weren&amp;#8217;t inspired by Ruby on Rails have not been included, so forget things like &lt;span class="caps"&gt;PRADO&lt;/span&gt;, Qcodo, eZComponents, or even Mojavi: it&amp;#8217;s not that they are &amp;#8220;bad&amp;#8221;, they&amp;#8217;ve just been left out because they are not pertinent to this article&lt;/em&gt;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;h3&gt;CakePHP&lt;/h3&gt;


	&lt;p style="float:right"&gt;&lt;img src="http://www.h3rald.com/img/pictures/CakePHP_1.0.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://www.cakephp.org/"&gt;www.cakephp.org&lt;/a&gt;
&lt;strong&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; version:&lt;/strong&gt; PHP4 and &lt;span class="caps"&gt;PHP5&lt;/span&gt;
&lt;strong&gt;License:&lt;/strong&gt; MIT&lt;sup&gt;&lt;a href="#fn5"&gt;5&lt;/a&gt;&lt;/sup&gt;
&lt;strong&gt;Download size (.tar.gz):&lt;/strong&gt; 184KB
&lt;strong&gt;Supported Databases:&lt;/strong&gt; MySQL, PostgreSQL, SQlite, &lt;span class="caps"&gt;MS SQL&lt;/span&gt; + any other supported by ADOdb or &lt;span class="caps"&gt;PEAR&lt;/span&gt;::DB database abstraction layers
&lt;strong&gt;Beginner&amp;#8217;s Tutorial&lt;/strong&gt;: &lt;a href="http://wiki.cakephp.org/tutorials:blog_tutorial_-_1"&gt;Blog Tutorial&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Official Description:&lt;/strong&gt;
&lt;em&gt;&amp;#8220;Cake is a rapid development framework for &lt;span class="caps"&gt;PHP&lt;/span&gt; which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and &lt;span class="caps"&gt;MVC&lt;/span&gt;. Our primary goal is to provide a structured framework that enables &lt;span class="caps"&gt;PHP&lt;/span&gt; users at all levels to rapidly develop robust web applications, without any loss to flexibility.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PROs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Lightweight, not bloated, containing only essential code&lt;/li&gt;
		&lt;li&gt;Runs both on &lt;span class="caps"&gt;PHP4&lt;/span&gt; and &lt;span class="caps"&gt;PHP5&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;No configuration needed &amp;#8211; except for a stupidly short database configuration file and a few constants which &lt;em&gt;can&lt;/em&gt; be modified. You can literally start baking in less than five minutes&lt;/li&gt;
		&lt;li&gt;Extended table association support, allowing the creation of complex database architechtures&lt;/li&gt;
		&lt;li&gt;Extremely logical and functional directory structure: better than Rails, if you ask me.&lt;/li&gt;
		&lt;li&gt;Enhanced &lt;span class="caps"&gt;AJAX&lt;/span&gt; support through the &lt;span class="caps"&gt;AJAX&lt;/span&gt; and Javascript view helpers&lt;/li&gt;
		&lt;li&gt;useful &amp;#8220;bake&amp;#8221; command line script to generate parts of the  code automatically&lt;/li&gt;
		&lt;li&gt;Very active community and plenty of &lt;em&gt;satellite sites&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;Suitable for every kind of website, from the small personal site to the advanced e-business application.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;CONs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;No &amp;#8220;official&amp;#8221; internationalization support for now, but it will be included in the next milestone.&lt;/li&gt;
		&lt;li&gt;It does not take fully advantage of &lt;span class="caps"&gt;PHP5&lt;/span&gt; features&lt;/li&gt;
		&lt;li&gt;Official documentation still needs some some improvement, although now it seems pretty complete and exhaustive.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Comments:&lt;/strong&gt;
CakePHP is my personal favorite: easy to learn, easy to use,multi-purpose and not bloated. Cake&amp;#8217;s philosophy is not to include unnecessary code in the framework unless it&amp;#8217;s absolutely necessary for the framework itself, as a result, 3rd-party libraries are not included in the official releases, but may be seamlessly integrated with the framework &lt;em&gt;if developers need them&lt;/em&gt;. 
Cake&amp;#8217;s success is partly determined &amp;#8211; at least initially &amp;#8211; by the fact that it can run fine with no limitations on &lt;span class="caps"&gt;PHP4&lt;/span&gt;, while other similar frameworks don&amp;#8217;t. Although this may still be one of its most obvious strengths, it must be said that Cake seems to go in the right direction, taking only the best from Rails, without forcing developers into complex and pointless adaptations, and evolving into a great framework created &lt;em&gt;in &lt;span class="caps"&gt;PHP&lt;/span&gt;, for &lt;span class="caps"&gt;PHP&lt;/span&gt;&lt;/em&gt;.&lt;/p&gt;


	&lt;h3&gt;Symfony&lt;/h3&gt;


	&lt;p style="float:right"&gt;&lt;img src="http://www.h3rald.com/img/pictures/symfony.gif" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://www.symfony-project.com/"&gt;www.synfony.project.com&lt;/a&gt;
&lt;strong&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; version:&lt;/strong&gt; PHP5
&lt;strong&gt;License:&lt;/strong&gt; Symfony&lt;sup&gt;&lt;a href="#fn6"&gt;6&lt;/a&gt;&lt;/sup&gt;
&lt;strong&gt;Download size (.tgz):&lt;/strong&gt; 1255KB
&lt;strong&gt;Supported Databases:&lt;/strong&gt; MySQL, PostgreSQL, SQLite, Oracle, &lt;span class="caps"&gt;MS SQL&lt;/span&gt; + any other supported by Creole database abstraction layer
&lt;strong&gt;Beginner&amp;#8217;s Tutorial&lt;/strong&gt;: &lt;a href="http://www.symfony-project.com/tutorial/my_first_project.html"&gt;My first project&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Official Description:&lt;/strong&gt;
&lt;em&gt;&amp;#8220;Based on the best practices of web development, thoroughly tried on several active websites, symfony aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure. [&amp;#8230;]&lt;/em&gt;
&lt;em&gt;Symfony is an object-oriented &lt;span class="caps"&gt;PHP5&lt;/span&gt; framework based on the &lt;span class="caps"&gt;MVC&lt;/span&gt; model. Symfony allows for the separation of business rules, server logic and presentation views of a web application. It also contains numerous tools and classes aimed at shortening the development time of a complex web application.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PROs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Fully featured framework, includes everything you might ever need (see CONs, below)&lt;/li&gt;
		&lt;li&gt;Full native internationalization support&lt;/li&gt;
		&lt;li&gt;Truly excellent documentation, tutorials, wiki, book, screencasts, &lt;span class="caps"&gt;API&lt;/span&gt;, real-world examples, etc. etc.&lt;/li&gt;
		&lt;li&gt;Code generators&lt;/li&gt;
		&lt;li&gt;Various &amp;#8220;pre-built&amp;#8221; modules/libraries for the most common tasks&lt;/li&gt;
		&lt;li&gt;It was not inspired only by Rails, but borrows concepts and practices from various other frameworks&lt;/li&gt;
		&lt;li&gt;Good community support&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;CONs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Seems too big compared to the others, too many &amp;#8220;extras&amp;#8221; which may not be useful to &lt;em&gt;all&lt;/em&gt; developers &lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;PHP5&lt;/span&gt; only&lt;/li&gt;
		&lt;li&gt;Confusing and disorganized directory structure&lt;/li&gt;
		&lt;li&gt;Uses too many configuration files, not suitable for &lt;em&gt;simple&lt;/em&gt; projects&lt;/li&gt;
		&lt;li&gt;Steep learning curve&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Comments:&lt;/strong&gt;
Symfony is really an interesting framework: it&amp;#8217;s perhaps the most &lt;em&gt;complete&lt;/em&gt; in terms for features and documentation. The only problem I have with it is that it just seems too complex and rather difficult to learn if compared to the others, which can do &lt;em&gt;almost&lt;/em&gt; the same things (or will soon be able to) in a &lt;em&gt;&lt;span class="caps"&gt;MUCH&lt;/span&gt;&lt;/em&gt; simpler way. A nice blend of &lt;span class="caps"&gt;MVC&lt;/span&gt;, pre-built components, command line generators and &lt;span class="caps"&gt;YAML&lt;/span&gt;/Propel configuration files, but perhaps a bit &lt;em&gt;disorganized&lt;/em&gt; in its internal structure, unlike its wonderful documentation and support section.&lt;/p&gt;


	&lt;h3&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; on Trax&lt;/h3&gt;


	&lt;p style="float:right"&gt;&lt;img src="http://www.h3rald.com/img/pictures/phpontrax.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://www.phpontrax.com/"&gt;www.phpontrax.com&lt;/a&gt;
&lt;strong&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; version:&lt;/strong&gt; PHP5
&lt;strong&gt;License:&lt;/strong&gt; MIT
&lt;strong&gt;Download size (.tgz):&lt;/strong&gt; 843KB
&lt;strong&gt;Supported Databases:&lt;/strong&gt; Any database supported by &lt;span class="caps"&gt;PEAR&lt;/span&gt;::DB
&lt;strong&gt;Beginner&amp;#8217;s Tutorial&lt;/strong&gt;: &lt;a href="http://svn.phpontrax.com/wiki/HowToCreateATraxApplication"&gt;How to create a Trax application&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Official Description:&lt;/strong&gt;
&lt;em&gt;&amp;#8220;Php On Trax (formerly Php On Rails) is a web-application and persistance framework that is based on Ruby on Rails and includes everything needed to create database-backed web-applications according to the Model-View-Control pattern of separation.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PROs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Simple, logical, essential: a true RoR port to &lt;span class="caps"&gt;PHP5&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;Code generators, like Rails&lt;/li&gt;
		&lt;li&gt;Zero configuration (like Rails and Cake&lt;/li&gt;
		&lt;li&gt;Easy and logical directory structure (the same as Rails)&lt;/li&gt;
		&lt;li&gt;Supports table associations, but more in a way which is more similar to Ruby on Rails than Cake.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;CONs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Lack of documentation compared to the others&lt;/li&gt;
		&lt;li&gt;Trying to port Ruby on Rails to &lt;span class="caps"&gt;PHP&lt;/span&gt;, ignoring why RoR was not built in &lt;span class="caps"&gt;PHP&lt;/span&gt; in the first place&lt;sup&gt;&lt;a href="#fn7"&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
		&lt;li&gt;No internationalization or other advanced functionalities&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;PHP5&lt;/span&gt; only&lt;/li&gt;
		&lt;li&gt;Small community&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;DBO&lt;/span&gt; class based only on &lt;span class="caps"&gt;PEAR&lt;/span&gt;::DB&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Comments:&lt;/strong&gt;
In my opinion this project aims too much to be a Rails-clone to acquire a proper consensus. Trying to port something to another language is not good, especially in the case of Rails and Ruby. This framework looks somehow like an old version of CakePHP, which evolved slightly but always remained anchored to its beliefs of building a Rails port for &lt;span class="caps"&gt;PHP&lt;/span&gt; (even in the name!). Some may say that this is a lost battle since the beginning &amp;#8211; or better, since before it started &amp;#8211; but others found that &lt;span class="caps"&gt;PHP&lt;/span&gt; on Trax can be the easiest way to switch from Ruby on Rails to a &lt;span class="caps"&gt;PHP&lt;/span&gt; equivalent. Who is going to do that? Well, Ruby programmers &lt;em&gt;forced&lt;/em&gt; to develop in &lt;span class="caps"&gt;PHP&lt;/span&gt;, maybe. Not too good, but not too bad either.&lt;/p&gt;


	&lt;h3&gt;Code Igniter&lt;/h3&gt;


	&lt;p style="float:right"&gt;&lt;img src="http://www.h3rald.com/img/pictures/codeigniter.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://www.codeigniter.com/"&gt;www.codeigniter.org&lt;/a&gt;
&lt;strong&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; version:&lt;/strong&gt; PHP4 and &lt;span class="caps"&gt;PHP5&lt;/span&gt;
&lt;strong&gt;License:&lt;/strong&gt; CodeIgniter&lt;sup&gt;&lt;a href="#fn8"&gt;8&lt;/a&gt;&lt;/sup&gt;
&lt;strong&gt;Download size (.zip):&lt;/strong&gt; 609KB
&lt;strong&gt;Supported Databases:&lt;/strong&gt; MySQL, PostgreSQL, SQLite, MySQLi, &lt;span class="caps"&gt;MS SQL&lt;/span&gt; + &lt;span class="caps"&gt;ODBC&lt;/span&gt;
&lt;strong&gt;Beginner&amp;#8217;s Tutorial&lt;/strong&gt;: &lt;a href="http://www.codeigniter.com/videos/ci_intro.mov"&gt;Hello World! Introduction to Code Igniter&lt;/a&gt; [video]&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Official Description:&lt;/strong&gt;
&lt;em&gt;&amp;#8220;Code Igniter is an Open Source Web Application Framework that makes writing kick-ass &lt;span class="caps"&gt;PHP&lt;/span&gt; programs simple as apple pie. [&amp;#8230;] Designed to enable, not overwhelm, Code Igniter is a powerful &lt;span class="caps"&gt;PHP&lt;/span&gt; framework with a very small footprint, built for &lt;span class="caps"&gt;PHP&lt;/span&gt; coders who need a simple and elegant toolkit to create full-featured web applications.&lt;/em&gt;
&lt;em&gt;If you&amp;#8217;re a developer who lives in the real world of shared hosting accounts and clients with deadlines, and if you&amp;#8217;re tired of ponderously large and thoroughly undocumented frameworks that require rocket science to understand, Code Igniter might just be the right tool for you.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PROs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Good and organized documentation&lt;/li&gt;
		&lt;li&gt;Zero configuration (like Rails and Cake)&lt;/li&gt;
		&lt;li&gt;Includes various classes and libraries for common tasks&lt;/li&gt;
		&lt;li&gt;Compatible with &lt;span class="caps"&gt;PHP4&lt;/span&gt; and &lt;span class="caps"&gt;PHP5&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;Medium-sized community&lt;/li&gt;
		&lt;li&gt;Intuitive directory structure&lt;/li&gt;
		&lt;li&gt;Ships with the full user guide included in separate &lt;span class="caps"&gt;HTML&lt;/span&gt; files&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;CONs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;No full (&amp;#8220;written&amp;#8221;) tutorials except the videos!&lt;/li&gt;
		&lt;li&gt;Relatively new to the scene, but growing&lt;/li&gt;
		&lt;li&gt;Does not seem to support table associations.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Comments:&lt;/strong&gt;
People on the Net seem to be rather enthusiastic about this framework: where there&amp;#8217;s a thread about the &lt;em&gt;big ones&lt;/em&gt; (Cake and Symfony), there&amp;#8217;s always, someone who pops in suggesting to try out Code Igniter. I personally think this can be a true bless for small/medium sized projects, however, I&amp;#8217;d opt for CakePHP or Symfony for a large scale application: something is missing, e.g., most notably, table associations.&lt;/p&gt;


	&lt;h3&gt;Biscuit&lt;/h3&gt;


	&lt;p style="float:right"&gt;&lt;img src="http://www.h3rald.com/img/pictures/biscuit.gif" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://biscuitproject.tigris.org/"&gt;biscuitproject.tigris.org&lt;/a&gt;
&lt;strong&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; version:&lt;/strong&gt; PHP4 and &lt;span class="caps"&gt;PHP5&lt;/span&gt;
&lt;strong&gt;License:&lt;/strong&gt; MIT&lt;sup&gt;&lt;a href="#fn5"&gt;5&lt;/a&gt;&lt;/sup&gt;  
&lt;strong&gt;Download size (.zip):&lt;/strong&gt; 240KB
&lt;strong&gt;Supported Databases:&lt;/strong&gt; Any database supported by &lt;span class="caps"&gt;PEAR&lt;/span&gt;::DB
&lt;strong&gt;Beginner&amp;#8217;s Tutorial&lt;/strong&gt;: &lt;a href="http://bennolan.com/biscuit/tutorial.html"&gt;Creating a simple application using the Biscuit &lt;span class="caps"&gt;MVC&lt;/span&gt; framework&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Official Description:&lt;/strong&gt;
&lt;em&gt;&amp;#8220;The mission of this project is to port Ruby on Rails to &lt;span class="caps"&gt;PHP5&lt;/span&gt; (minus the Ruby part ;-)&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PROs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Zero configuration, easy to deploy&lt;/li&gt;
		&lt;li&gt;Runs both on &lt;span class="caps"&gt;PHP4&lt;/span&gt; and &lt;span class="caps"&gt;PHP5&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;Simple to learn&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;CONs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Still under development and incomplete&lt;/li&gt;
		&lt;li&gt;Offers a limited subset of the features and functionalities offered by competitors: no internationalization, no table associations, no scaffolding&amp;#8230; &lt;/li&gt;
		&lt;li&gt;&lt;em&gt;&amp;#8220;Documentation coming soon&amp;#8221;&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;Almost non-existent community&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Comments:&lt;/strong&gt;
This project started as an attempt to create something simpler than CakePHP and more similar to Rails. I&amp;#8217;m not sure whether the project is still active or not, since the last &amp;#8220;release&amp;#8221; on the former&amp;#8217;s developer site is dated August 2005. Still in early stage &amp;#8211; or dead.&lt;/p&gt;


	&lt;h3&gt;Pipeline&lt;/h3&gt;


	&lt;p style="float:right"&gt;&lt;img src="http://www.h3rald.com/img/pictures/livepipe.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="http://livepipe.net/pipeline/"&gt;livepipe.net/pipeline/&lt;/a&gt;
&lt;strong&gt;&lt;span class="caps"&gt;PHP&lt;/span&gt; version:&lt;/strong&gt; PHP5
&lt;strong&gt;License:&lt;/strong&gt; Pipeline&lt;sup&gt;&lt;a href="#fn9"&gt;9&lt;/a&gt;&lt;/sup&gt;
&lt;strong&gt;Download size (.zip):&lt;/strong&gt; 288KB
&lt;strong&gt;Supported Databases:&lt;/strong&gt; SQLite
&lt;strong&gt;Beginner&amp;#8217;s Tutorial&lt;/strong&gt;: none&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;PROs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Simple directory structure&lt;/li&gt;
		&lt;li&gt;Suitable for small projects&lt;/li&gt;
		&lt;li&gt;Comes with various ready-made components&lt;/li&gt;
		&lt;li&gt;Supports table relationships&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;CONs:&lt;/strong&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;span class="caps"&gt;PHP5&lt;/span&gt;-only&lt;/li&gt;
		&lt;li&gt;Too restrictive: only SQLite supported, &lt;em&gt;kindly suggests&lt;/em&gt; developers to use its built-in features only&lt;/li&gt;
		&lt;li&gt;No documentation or tutorials, just the &lt;span class="caps"&gt;API&lt;/span&gt; &lt;/li&gt;
		&lt;li&gt;Not suitable for large projects&lt;/li&gt;
		&lt;li&gt;Almost non-existent community&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Comments:&lt;/strong&gt;
This project mainly borrowed the &lt;span class="caps"&gt;MVC&lt;/span&gt; architecture and some basic concepts from Rails, creating a simple &lt;span class="caps"&gt;PHP5&lt;/span&gt; framework with personal/small websites in mind: it offers various built-in components which can be handy to most of us, supports &lt;em&gt;only&lt;/em&gt; SQLite, and basically tells developers what to do. In my opinion it&amp;#8217;s not flexible enough to be compared to the others, and it&amp;#8217;s simply not suitable for anything other than small websites.&lt;/p&gt;


	&lt;h3&gt;Conclusions&lt;/h3&gt;


	&lt;p&gt;My favorite framework still remains CakePHP, it&amp;#8217;s simple and yet powerful, easy to learn and use, mature, well supported and continuously improving. Symfony &amp;#8211; at the moment &amp;#8211; seems to be the one with most features and the best documentation, and it is an excellent and well supported project. The only problem I have with it is the scary amount of configuration files necessary to create an application: CakePHP doesn&amp;#8217;t need any and can be used for (almost?) equally complex projects.
Although I didn&amp;#8217;t have a chance to try them out, &lt;span class="caps"&gt;PHP&lt;/span&gt; on Trax is certainly the most faithful port of Ruby on Rails to &lt;span class="caps"&gt;PHP&lt;/span&gt;, but it lacks some of the features CakePHP and Symfony offer. Code Igniter may not be as advanced as the others, but its community seems to grow and its simplicity may appeal more users in the future&amp;#8230;&lt;/p&gt;


	&lt;p&gt;At any rate, developers should &lt;em&gt;always&lt;/em&gt; choose the best framework for their needs: I tried to write a quick comparative analysis of these six Rails&amp;#8217; &amp;#8220;PHP children&amp;#8221;, now it&amp;#8217;s &lt;em&gt;your&lt;/em&gt; turn, try out some of them, if you choose wisely you won&amp;#8217;t be disappointed.&lt;/p&gt;


	&lt;h3&gt;Notes&lt;/h3&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; They are all distributed according to various Open Source licenses.&lt;/p&gt;


	&lt;p id="fn2"&gt;&lt;sup&gt;2&lt;/sup&gt; &lt;a href="http://www.rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; &amp;#8211; Ruby framework for web development&lt;/p&gt;


	&lt;p id="fn3"&gt;&lt;sup&gt;3&lt;/sup&gt; &lt;a href="http://www.cakephp.org"&gt;CakePHP&lt;/a&gt; &amp;#8211; Rapid [PHP] Development Framework&lt;/p&gt;


	&lt;p id="fn4"&gt;&lt;sup&gt;4&lt;/sup&gt; &lt;a href="http://www.h3rald.com/articles/view/cakephp"&gt;CakePHP &amp;#8211; A &amp;#8216;tasty&amp;#8217; solution for &lt;span class="caps"&gt;PHP&lt;/span&gt; programming&lt;/a&gt;, originally published on &lt;a href="http://www.zzine.org/articles/cakephp"&gt;zZine Magazine&lt;/a&gt;&lt;/p&gt;


	&lt;p id="fn5"&gt;&lt;sup&gt;5&lt;/sup&gt; Open Source &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;&lt;span class="caps"&gt;MIT&lt;/span&gt; License&lt;/a&gt;.&lt;/p&gt;


	&lt;p id="fn6"&gt;&lt;sup&gt;6&lt;/sup&gt; Symfony License:
&lt;small&gt;
&lt;blockquote&gt;
Copyright&amp;#169; 2004-2006 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &amp;#8220;Software&amp;#8221;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:&lt;/p&gt;


	&lt;p&gt;The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.&lt;/p&gt;


&lt;span class="caps"&gt;THE SOFTWARE IS PROVIDED&lt;/span&gt; &amp;#8220;AS IS&amp;#8221;, &lt;span class="caps"&gt;WITHOUT WARRANTY OF ANY KIND&lt;/span&gt;, EXPRESS &lt;span class="caps"&gt;OR IMPLIED&lt;/span&gt;, INCLUDING &lt;span class="caps"&gt;BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY&lt;/span&gt;, FITNESS &lt;span class="caps"&gt;FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT&lt;/span&gt;. IN &lt;span class="caps"&gt;NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM&lt;/span&gt;, DAMAGES &lt;span class="caps"&gt;OR OTHER LIABILITY&lt;/span&gt;, WHETHER &lt;span class="caps"&gt;IN AN ACTION OF CONTRACT&lt;/span&gt;, TORT &lt;span class="caps"&gt;OR OTHERWISE&lt;/span&gt;, ARISING &lt;span class="caps"&gt;FROM&lt;/span&gt;, OUT &lt;span class="caps"&gt;OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE&lt;/span&gt;.
&lt;/blockquote&gt;
&lt;/small&gt;

	&lt;p id="fn7"&gt;&lt;sup&gt;7&lt;/sup&gt; Read the comments by David Heinemeier Hansson on &lt;a href="http://www.37signals.com/svn/archives/000606.php"&gt;Ruby on Rails to Basecamp&lt;/a&gt;&lt;/p&gt;


	&lt;p id="fn8"&gt;&lt;sup&gt;8&lt;/sup&gt; CodeIgniter &lt;a href="http://www.codeigniter.com/user_guide/license.html"&gt;License Agreement&lt;/a&gt;&lt;/p&gt;


	&lt;p id="fn9"&gt;&lt;sup&gt;9&lt;/sup&gt; Pipeline is licensed under the same terms as the Symfony framework [Copyright&amp;#169; 2006 Picora Pipeworks &lt;span class="caps"&gt;LLC&lt;/span&gt;].&lt;/p&gt;</description>
      <pubDate>Wed, 03 May 2006 14:57:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:8db5f843-5d83-102a-bd55-b1b05fcbdcec</guid>
      <author>Fabio Cevasco</author>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks</link>
      <category>Articles</category>
      <category>Frameworks</category>
      <category>review</category>
      <category>CakePHP</category>
      <category>Rails</category>
      <trackback:ping>http://www.h3rald.com/trackback/entries/61</trackback:ping>
    </item>
    <item>
      <title>"Rails-inspired PHP frameworks" by karan</title>
      <description>&lt;p&gt;i have learn more from your site it is very useful to student who study php&lt;/p&gt;</description>
      <pubDate>Fri, 04 Jul 2008 10:29:56 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4f2b1222-12f6-498f-aef5-03539f1bf7bf</guid>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks#comment-245</link>
    </item>
    <item>
      <title>"Rails-inspired PHP frameworks" by Arrms</title>
      <description>&lt;p&gt;Some php developers have been doing mvc style work since 2000.&lt;/p&gt;


	&lt;p&gt;Including hacked reflection and dynamic type code.&lt;/p&gt;


	&lt;p&gt;PHP 5 is a big step towards fixing a lot of the issues, and a lot of the comments made seem very un-informed about php.  Yes php has a lot of bad programmers around because its so easy to hack up some webpages.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve used a lot of the frameworks around and they are all fine as long as long as you do what they want, when you want to do something they don&amp;#8217;t do is when you run into problems.&lt;/p&gt;


	&lt;p&gt;Rails and Ruby look great but if scalability is a big issue then its just not viable. I&amp;#8217;m sure that will be fixed in the future. It will be the same as php, there will be a huge amount of poor programming done in these initial days etc etc.&lt;/p&gt;


	&lt;p&gt;And I&amp;#8217;m not a big fan of any of the PHP frameworks out there at the moment, they could be done a lot better. The more decent frameworks are only seen in commercial products unfortunately.&lt;/p&gt;


	&lt;p&gt;PHP has reflection now, and you can call methods and classes using variables&amp;#8230; which seems to be what ruby claims as dynamicness that php doesn&amp;#8217;t have. Using wonderful reflection magic is going to involve a performance hit. So if that&amp;#8217;s a great claim on why to use language X, and your going to go crazy using it thats all well and good, but your performance and bugging are going to be a pain.&lt;/p&gt;


	&lt;p&gt;Activerecord magical database crazyness, is all great, but if you want to tweak performance quite often you have to do some of the work yourself anyway. And I really fail to see some of the real differences that people claim.&lt;/p&gt;


	&lt;p&gt;But anyway, good review etc etc.&lt;/p&gt;</description>
      <pubDate>Sun, 13 Jan 2008 15:56:33 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:deace369-1a84-4201-aa31-ed2955084f89</guid>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks#comment-200</link>
    </item>
    <item>
      <title>"Rails-inspired PHP frameworks" by lexor@cyberspace.org</title>
      <description>&lt;p&gt;The article seems to be truthful. Symfony could be different a year ago, but I can&amp;#8217;t agree that it&amp;#8217;s directory structure is confusing and disorganized. You can customize it, some folders are required to store data provided by functionality that is missing from other frameworks &amp;#8211; think about it!&lt;/p&gt;


	&lt;p&gt;&amp;gt;&amp;gt;Uses too many configuration files, not suitable for simple projects
I know the only simple project &amp;#8211; &amp;#8220;Hello, world!&amp;#8221;. You can&amp;#8217;t create infinitely simple and mega powerful framework &amp;#8211; these are contradictory requirements.
Btw, do you know that a powerful admin interface can be generated based on a config file ONLY?&lt;/p&gt;


	&lt;p&gt;&amp;gt;&amp;gt;Steep learning curve
It&amp;#8217;s worth it.&lt;/p&gt;</description>
      <pubDate>Mon, 17 Dec 2007 13:56:58 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:dcd6fb71-4e32-45ed-8ae7-8c888bd45dd9</guid>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks#comment-169</link>
    </item>
    <item>
      <title>"Rails-inspired PHP frameworks" by Fabio Cevasco</title>
      <description>&lt;p&gt;RailsGuy: Thanks for your comment. A year ago I would have argued endlessly on how CakePHP is better than Rails and all that. Now I agree 100% with you and this very site is now powered by Rails and Typo! :-)&lt;/p&gt;</description>
      <pubDate>Thu, 18 Oct 2007 15:23:12 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:aa9d4298-7f29-4d0a-8d9d-a1fafa9996d9</guid>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks#comment-102</link>
    </item>
    <item>
      <title>"Rails-inspired PHP frameworks" by RailsGuy</title>
      <description>&lt;p&gt;It&amp;#8217;s funny how PHP developers are just now discovering MVC. This pattern has been around long before the internet and was adapted into MVC2 for web application mostly by pioneering Java developers.&lt;/p&gt;


	&lt;p&gt;If Rails is what these PHP frameworks strive to be, then why not just use Rails? PHP frameworks will never be as good as Rails, not unless they change PHP itself. The language is just not dynamic enough to do what rails does with Ruby&amp;#8217;s reflection and meta programming.&lt;/p&gt;


	&lt;p&gt;This post shows just how fragmented the PHP community is, and will continue to be.&lt;/p&gt;</description>
      <pubDate>Thu, 18 Oct 2007 10:22:04 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d865e26a-48d6-47e7-a054-5beda0b99f24</guid>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks#comment-101</link>
    </item>
    <item>
      <title>"Rails-inspired PHP frameworks" by George</title>
      <description>&lt;p&gt;Hey, great article and amazingly designed site you got here. Thanks for the info.&lt;/p&gt;</description>
      <pubDate>Tue, 31 Jul 2007 20:57:32 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d144bb89-bf86-4c98-8345-d1190050d89e</guid>
      <link>http://www.h3rald.com/articles/rails-inspired-php-frameworks#comment-43</link>
    </item>
  </channel>
</rss>
