Fast. Copy all the framework files to the web server and it’s ready
requires the creation of a bootstrap file with all the initialisation
Fast. Copy all the framework files to the web server and it’s ready. Zero configuration.
documentation
Lacking compared to Zend Framework and Code Igniter
The Zend Framework has very detailed documentation with a lot of examples
The documentation is very well-structured and organized although it is a bit less detailed
components
Most of the components are geared towards forward facing web apps.
ZF has a massive number of classes and components.These are well documented.
Has a large number of components.
database
Active Record pattern + ORM
ORM using both the Table Data Gateway and the Row Data Gateway
Active Record pattern
flexibility
flexible in extending the functionalities.
ZF is simply a collection classes and as such any file or folder can be placed anywhere as long as the location is added to the bootstrap file.
CI is very flexible allowing almost all defaults to be modified.
It can even run Zend modules inside Code Igniter.
validation
Rails-esque validation.
It happens in the Model and we pass in an array of criteria of the validation and call a function validate().
The Zend_Validate component provides a set of commonly needed validators.
Validator is a separate class and the class is added to the data (like a filter)
Data validation in CodeIgniter is handled via a validation class. Very rigid, only allows to be run at Controller level.
performance
The slowest of the three.
14mb of memory usage per page.
The Zend Framework is about half as fast as CodeIgniter.
CI has about double the performance of the Zend Framework.
2mb of memory usage.
learning curve
medium. Very rail-esque, having an experience with Rails will speed the learning tremendously.
Once a developer get the conventions down, it is actually easy.
Steeper learning curve, the documents really help. Robustness comes with a price.
Easiest learning curve.
license
MIT License
BSD-style
New BSD
command line interface
yes.
yes. Zend_Tool (1.8 version)
no
configuration
CakePHP uses a array style database configuration but requires a class to be created for new configurations but loading/writing configuration is as easy as calling a single function.
Zend uses a app.ini file that is parsed by the system.
It doesn't use php syntax instead opts for a traditional desktop application style configuration and it doesn't show room for expansion.
CodeIgniter uses simple file based array configuration saving.
Once any configuration file is loaded into the system it can be access with a simple function.
overall
CakePHP runs a single Object style which inherits the various settings/aspects of the program.
Little static method calls are used and has a lot of "magic" that makes assumptions and fills in gaps for your convenience.
Zend follows more traditional programming steps of "include and
instantiate" for its components, and requires that basic Classes be written specific to your application so that you may extend them to to ensure class propagation.
CodeIngiter is entirely object oriented and runs entirely off of a core CodeIgniter object (or "$this", in whatever context).
conclusion
I have an experience in CakePHP. Tablefy.com (this website) is built using CakePHP.
Very familiar.
Experience: Hello world app.
1.8 will make it easy in terms of learning curve, but it will be released late April 2009 and it is RC1.
I would really like to try the framework for kicks and giggles :D
Created 2 web apps with it. Very familiar.
support options
IRC: CakePHP
google groups: http://groups.google.com/group/cake-php