First I would like to apologize to all my readers. I’ve gotten super busy and all three of my companies are working on at least two projects each. I am also working heavy in finishing the latest installment of the Macenstein.com theme for Doc so we can roll that out. So I pushed this framework post back a few days. Let’s see what I can knock out in a few hours
Well lets skip the bull and get into this eight hundred pound gorilla and tame him. PHP Frameworks are the number one most used server side language used out there. So again this blog is to spark up discussion, comments, social tags, and tweet me. I live for feedback. I can tell you what I think you should be looking for; and even if you don’t go with my suggestions you will have a general guideline in what you need to have in a PHP Framework. So you may be reading this and think to your self “What the hell is this guy talking about what is a PHP Framework?” Well to answer it very quickly it is a framework for PHP which uses commonly known design patterns like Active Record, Association Data Mapping, Front Controller and MVC. The primary goal of these frameworks is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility. To simplify that statement a framework allows you to write less code and create more rich web applications by using prewritten code, so it saves you time and hassle because you don’t have to code most commonly used functions.
What should I look for when choosing a framework? – Well here is a list of what I look for and how I review certain frameworks.
- PHP 4
- Is it PHP 4 Compatible? The Unfortunate truth is there are still a lot of servers out there that are only running PHP 4 still.
- PHP 5
- Is it PHP 5 Compatible? If its not what are they doing in development then why are they not taking advantage of a more up to date version of PHP?
- MVC
- Does it come with inbuilt support for a Model-View-Controller? (More Info)
- Multiple Databases
- Can it support multiple databases without having to change anything?
- ORM
- Is it an object-record mapper? Usually an implementation of ActiveRecord.
- DB Objects
- Does it includes other database objects, like a TableGateWay?
- Templates
- Does it have an inbuilt template engine?
- Caching
- Does it include a form of caching object or some way other way of caching.
- Validation
- Does it have an inbuilt validation or filtering component?
- Ajax
- Does it support Ajax?
- Auth Module
- Does it have a module for handling user authentication?
- Modules
- What other modules does it have, like an RSS feed parser, PDF module or anything else (useful)?
- EDP
- Event Driven Programming?
So depending on the project when I am choosing a framework I will ask my self these questions about it. This will help you find the most useful framework to your needs. So let talk about the specific frameworks.
CakePHP
CakePHP is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. The primary goal of CakePHP is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility and has become my number one choice in frameworks.
Latest version1.2.1.8004
- PHP 4 – Yes
- PHP 5 – Yes
- MVC – Yes
- Multiple Databases – Yes
- ORM – Yes
- DB Objects – Yes
- Templates – No
- Caching – Yes
- Flexible Caching: use memcache, apc, xcache, the file system, or a model to speed up your application
- Validation – Yes
- Ajax – Yes
- AjaxHelper
- utilizes the ever-popular Prototype and script.aculo.us libraries for Ajax operations and client side effects.
- AjaxHelper
- Auth Module – Yes
- Modules – Yes
- FormHelper
- focuses on creating forms quickly, in a way that will streamline validation, re-population and layout.
- is also flexible – it will do almost everything for you automagically, or you can use specific methods to get only what you need.
- HtmlHelper
- makes HTML-related options easier, faster, and more resilient to change. Using this helper will enable your application to be more light on its feet, and more flexible on where it is placed in relation to the root of a domain.
- Javascript helper
- is used to aid in creating well formatted related javascript tags and codeblocks. There are several methods some of which are designed to work with the Prototype Javascript library.
- NumberHelper
- contains convenient methods that enable display numbers in common formats in your views. These methods include ways to format currency, percentages, data sizes, format numbers to specific precisions and also to give you more flexibility with formating numbers. All of these functions return the formated number. They do not automatically echo the output into the view.
- Pagination helper
- is used to output pagination controls such as page numbers and next/previous links.
- RSS helper
- makes generating XML for RSS feeds easy.
- Session Helper
- replicates most of the components functionality and makes it available in your view. The Session Helper is automatically added to your view — it is not necessary to add it to the $helpers array in the controller.
- TextHelper
- contains methods to make text more usable and friendly in your views. It aids in enabling links, formatting urls, creating excepts of text around chosen words or phrases, highlighting key words in blocks of text, and to gracefully truncating long stretches of text.
- Time Helper
- allows for the quick processing of time related information. The Time Helper has two main tasks that it can perform:
- It can format time strings.
- It can test time.
- allows for the quick processing of time related information. The Time Helper has two main tasks that it can perform:
- XML Helper
- simplifies the output of XML documents.
- FormHelper
- EDP – Yes
Cost – Free
Official websitehttp://www.cakephp.org
Manual URLhttp://book.cakephp.org/
Other features:
- Access Control Lists and Authentication
- Simple yet extensive validation of model data
- Router for mapping urls and handling extensions
- Security, Session, and RequestHandler Components
- Utility classes for working with Files, Folders, Arrays and more
- Internationalization and Localization with static translations in gettext style or dynamic translations of model data.
- Full Console environment with support for multiple tasks. Included shells: bake, schema, acl, i18 extractor, api
- CSRF protection via Security Component
- HTTP Authentication via Security Component
- Configure class to provide dynamic handling of configuration settings and App class to handle importing required classes
Where to Learn Cake PHP
Screencasts – http://cakephp.org/screencasts
CakePHP cheatsheet (download now)
15 min Blog Tutorial – http://book.cakephp.org/view/326/the-cake-blog-tutorial
IBM: Cook Up Websites Fast (5 part series)
IBM: Build A Production Wiki (5 part series)
for more goodies, check out the Bakery
The Show is a live internet radio broadcast where they discuss CakePHP-related topics and answer questions live via IRC.
Learn more about the podcast here http://live.cakephp.org/ or Subscribe HereRSS or iTunes
Yii
Yii is a component-based high-performance PHP framework for developing large-scale Web applications. Yii is written in strict OOP and comes with thorough class reference and comprehensive tutorials. From MVC, DAO / ActiveRecord, widgets, caching, hierarchical RBAC, Web services, to theming, I18N and L10N, Yii provides nearly every feature needed by today’s Web 2.0 application development. And all these come without incurring much overhead. As a matter of fact, Yii is one of the most efficient PHP frameworks around.
- Latest version1.0.3 (March 1, 2009)
- PHP 4 – No
- PHP 5 – Yes
- MVC – Yes
- Multiple Databases – Yes
- ORM – Yes
- DB Objects – Yes
- Templates – Yes
- Theming: it enables change of the outlook of an Yii application instantly.
- Caching – Yes
- Layered caching scheme: Yii supports data caching, page caching, fragment caching and dynamic content. The storage medium of caching can be changed easily without touching the application code.
- Validation – Yes
- Ajax – Yes
- Integration with jQuery: enabling writing highly efficient and versatile JavaScript interfaces.
- Auth Module – Yes
- Yii has built-in authentication support. It also supports authorization via hierarchical role-based access control (RBAC).
- Modules – Yes
- Form input and validation:
- makes collecting form input extremely easy and safe. Yii comes with a set of validators which can be used to ensure validity of input data, and it also has helper methods and widgets to indicate errors when validation fails.
- Web 2.0 widgets: powered by jQuery:
- Yii comes with a set of Web 2.0 widgets, such as auto-complete input field, treeview, and so on.
- And more at the Extension Directory.
- Form input and validation:
- EDP – Yes
Cost- Free
Official websitehttp://www.yiiframework.com/
Manual URLhttp://www.yiiframework.com/doc/
Other features: Yii comes with a full stack of features needed by today’s Web 2.0 application development.
- Web services: Yii supports automatic generation of complex WSDL service specifications and management of Web service request handling.
- Internationalization (I18N) and localization (L10N): Yii supports message translation, date and time formatting, number formatting, and interface localization.
- Error handling and logging: errors are handled and presented more nicely, and log messages can be categorized, filtered and routed to different destinations.
- Security: Yii is equipped with many security measures to help secure Web applications to prevent cyber attacks. These measures include cross-site scripting (XSS) prevention, cross-site request forgery (CSRF) prevention, cookie tampering prevention, etc.
- Compliance to XHTML: Code generated by Yii components and command line tools complies to the XHTML standard.
- Automatic code generation: Yii provides the tools that can automatically generate the code that you need, such as a skeleton application, CRUD applications, etc.
- Purely object-oriented: Yii framework sticks to strict OOP paradigm. It does not define any global function or variable. And the class hierarchy that it defines allows maximum reusability and customization.
- Friendly with third-party code: Yii is carefully designed to work well with third-party code. For example, you can use code from PEAR or Zend Framework in your Yii application.
- Extension library: Yii provides an extension library consisting of user-contributed components. This makes the above feature list never ending.
Yii – Performance Comparison
- Yii: 673 requests/second
- CodeIgniter: 206 requests/second
- Zend: 83 requests/second
- CakePHP: 79 requests/second
- Prado: 75 requests/second
- Symfony: 50 requests/second
- (See performance comparison details)
Yii has incorporated many ideas and work from other well-known Web programming frameworks and applications. Below is a short list.
- Prado: This is the major source of ideas for Yii. Yii adopts its component-based and event-driven programming paradigm, database abstraction layers, modular application architecture, internationalization and localization, and many others.
- Ruby on Rails: Yii inherits its spirit of conventions over configurations. Yii also referenced its implementation of active record design pattern.
- jQuery: This is integrated in Yii as the foundational JavaScript framework.
- Symfony: Yii referenced its filter design and plug-in architecture.
- Joomla: Yii referenced its modular design and message translation scheme.
Where to learn Yii:
- Tutorials
- The Yii Blog Tutorial describes in detail how to use Yii to develop a practical Web application. It is a good starting point to learn Yii. This tutorial can also be downloaded in PDF format. (download now)
- The Definitive Guide to Yii is the most comprehensive Yii documentation that gives the definitive description of every feature of Yii and is being constantly updated to reflect the latest enhancements and changes. It can also be downloaded in PDF format. (downlaod now)
- The Yii Cookbook is a collection of Yii tutorials, each addressing a specific development task. Everyone with a Yii forum account can participate in creating or editing tutorial pages in the book.
- Class Reference
- Yii Framework Class Reference gives every detail about properties, methods and events defined in Yii framework classes. It is mostly referenced during development. It can also be downloaded in CHM format.
CodeIgniter
CodeIgniter is a powerful PHP framework with a very small footprint. Its built for PHP coders who need a simple and elegant toolkit to create full-featured web applications.
Latest version1.7.1
- PHP 4 – Yes
- PHP 5 – Yes
- MVC – Yes
- Multiple Databases – Yes
- ORM – Yes
- Active Record Database Support
- DB Objects – Yes
- Templates – Yes
- Template Engine Class
- Caching – Yes
- Full Page Caching
- Validation – Yes
- Ajax – Yes
- Auth Module – No
- Modules – Yes
- Form and Data Validation
- Email Sending Class. Supports Attachments, HTML/Text email, multiple protocols (sendmail, SMTP, and Mail) and more.
- Image Manipulation Library (cropping, resizing, rotating, etc.). Supports GD, ImageMagick, and NetPBM.
- EDP – Yes
Cost – Free
Official websitehttp://www.codeigniter.com/
Manual URLhttp://codeigniter.com/user_guide/
Wiki http://codeigniter.com/wiki/
Forum http://codeigniter.com/forums/
Other features:
- Extremely Light Weight
- Full Featured database classes with support for several platforms.
- Security and XSS Filtering
- Session Management
- File Uploading Class
- Localization
- Pagination
- Data Encryption
- Benchmarking
- Error Logging
- Application Profiling
- Scaffolding
- Calendaring Class
- User Agent Class
- Zip Encoding Class
- Trackback Class
- XML-RPC Library
- Unit Testing Class
- Search-engine Friendly URLs
- Flexible URI Routing
- Support for Hooks, Class Extensions, and Plugins
- Session Class
- Typography Class
- Cookie Helper
- Download Helper
- Inflector Helper
- Language Helper
- Number Helper
- Path Helper
- Security Helper
- Smiley Helper
- String Helper
- Text Helper
- Typography Helper
- URL Helper
- XML Helper
Video Tuts:
http://codeigniter.com/tutorials/http://video.derekallard.com/
Note: One thing I find interesting is that they don’t use CodeIgniter for their own website…
Symfony
Symfony is a web application framework for PHP5 projects. It aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure. The very small number of prerequisites make symfony easy to install on any configuration; you just need Unix or Windows with a web server and PHP 5 installed. It is compatible with almost every database system. In addition, it has a very small overhead, so the benefits of the framework don’t come at the cost of an increase of hosting costs. Using symfony is so natural and easy, for people used to PHP and the design patterns of Internet applications, that the learning curve is reduced to less than a day. The clean design and code readability will keep your delays short. Developers can apply agile development principles (such as DRY, KISS or the XP philosophy) and focus on applicative logic without losing time to write endless XML configuration files. Symfony is aimed at building robust applications in an enterprise context. This means that you have full control over the configuration: from the directory structure to the foreign libraries, almost everything can be customized. To match your enterprise’s development guidelines, symfony is bundled with additional tools helping you to test, debug and document your project.
Latest version1.2
- PHP 4 – No
- PHP 5 – Yes
- MVC – Yes
- Multiple Databases – Yes
- ORM – Yes
- DB Objects – Yes
- Templates – Yes
- Caching – Yes
- Validation – Yes
- Ajax – Yes
- Auth Module – Yes
- Modules – Yes
- With 474+ Symfony plugins developed by 211+ Contributors there are too many to name. From Applications, Backend, Behavior, Development, Dojo, Email, Ext, Forms, Internationalization, JavaScript, jQuery, Media, Model, Performance, Prototype, Search, Security, Spam, Template, WebServices, Widget, and YUI. You need to check them out you self here.
- EDP – No
CostFree
Official websitehttp://www.symfony-project.com/
Manual URLhttp://www.symfony-project.org/doc/1_0/Learning Symfony – Want Documentation? “We got it!” : Symfony is one of the best documented frameworks I have seen. Look at this list all available free from Symfony.
Books:
Practical symfony – Jobeet tutorial – 24 tutorials of 1 hour each, that’s all it takes to build up a complete and effective application from scratch. Definitely the best way to become a good symfony developer!
- … for Propel Read as PDF
- … for Doctrine Read as PDF
The Definitive Guide to symfony – Also known as “The Book”, this is the online version of a 490p book published by Apress and written by the symfony core team. Complete, didactic and practical, the definitive reference. (Read Read as PDF)
Symfony Forms in Action – This is the definitive guide to symfony forms. (Read as PDF)
Symfony and Doctrine – Learn how to use Doctrine with symfony. (Read as PDF)
The Cookbook – Recipies for everyday meals. (Read as PDF)
The API Documentation – Every class, method and function in symfony has PHPDoc comments explaining the way it works. The best way to check the parameters of a function or the nature of the returned value is there. (Read) – (Browse)
Tutorials
What’s new? – Discover the new features of symfony 1.2. This tutorial is for developers who have already worked with symfony 1.0 and 1.1 and who want to quickly learn new features of symfony 1.2. (Read as PDF)
My First Project – Discover the basics of symfony with this one-hour tutorial, covering installation, page creation, model modification, the admin generator, and much more… (Read as PDF)
The Admin Generator – Discover the power of the administration generator. You will never code a backend application by hand after seeing this! (Watch) – (Read) – (Download)
Easy Ajax – Create a drag and drop shopping cart in minutes with symfony. (Watch) - (Read as PDF) – (Test) – (Download)
- Credits
- Symfony started as a fork of Mojavi3-DEV, a PHP implementation of the Model-View-Controller model, in which an object-relationnal mapping based on Propel was integrated. Helpers for templates, routing, … inspired by Ruby on Rails, were added in a second time. Eventually, some custom features were integrated – such as cache and scaffolding – that made of symfony more than just another MVC implementation: a unique framework with so many features that it will take months to write the documentation. Symfony uses some other PHP open source projects:
- Creole, for database abstraction layer
- Prado, for i18n support
- Spyc, for YAML parsing (symfony 1.0)
- Pake, for command-line tool (symfony 1.0)
- Some open-source javascript libraries are included in the package:
- Prototype, for JavaScript framework (symfony 1.0 and 1.1)
- script.aculo.us, for Ajax and visual effects (symfony 1.0 and 1.1)
- Dynarch.com, for the DHTML Calendar (symfony 1.0 and 1.1)
- TinyMCE, for Rich Text Editing (symfony 1.0)
Zend Framework
Extending the art & spirit of PHP, Zend Framework is based on simplicity, object-oriented best practices, corporate friendly licensing, and a rigorously tested agile codebase. Zend Framework is focused on building more secure, reliable, and modern Web 2.0 applications & web services, and consuming widely available APIs from leading vendors like Google, Amazon, Yahoo!, Flickr; as well as API providers and cataloguers like StrikeIron and ProgrammableWeb.Expanding on these core themes, they have implemented Zend Framework to embody extreme simplicity & productivity, the latest Web 2.0 features, simple corporate-friendly licensing, and an agile well-tested code base that your enterprise can depend upon.
Latest Web Development Features
- AJAX support through JSON – meet the ease-of-use requirements your users have come to expect
- Search – a native PHP edition of the industry-standard Lucene search engine
- Syndication – the data formats & easy access to them your Web 2.0 applications need
- Web Services – Zend Framework aims to be the premier place to consume & publish web services
- High-quality, object-oriented PHP 5 class library – attention to best practices like design patterns, unit testing, & loose coupling
Latest version1.2
- PHP 4 – No
- PHP 5 – Yes
- MVC – Yes
- Multiple Databases – Yes
- ORM – Yes
- DB Objects – Yes
- Templates – No
- Caching – Yes
- Validation – Yes
- Ajax – Yes
- Dojo Toolkit integrated with full framework.
- Auth Module – Yes
- Authentication, Authorization, and Session management
- Modules – Yes
- Internationalization (i18n) and Localization (l10n)
- Web and Web Services
- Feed
- XML RPC
- Soap
- Reflection
- JSON
- PDF Generation
- E-Mail Communication
- Mime
- Search
- EDP – No
- CostFree
Official websitehttp://framework.zend.com/home
Manual URLhttp://framework.zend.com/docs/
Other information:
Google Data API Library
- As a Zend Framework technology partner, Google provides PHP 5 client libraries for accessing many of its popular services, such as YouTube, Picasa, and Blogger, through its Google Data APIs.
Microsoft InfoCard Library
- Microsoft has partnered with Zend Technologies to bring support for Windows Cardspace and other infocard technologis to PHP 5 applications.
Adobe AMF Library
- Adobe has contributed support for Action Message Format (AMF0 and AMF3) to Zend Framework.
Note: Zend seems to be well structured and well accepted but it would not be my first choice in Frameworks it has slowly gotten that corporate feel to it and that makes it more unappealing to me.
Zoop Object Oriented Php Framework
Zoop Object Oriented Php Framework or Zoop for short is a framework written in and for php. Zoop is stable, scalable and portable. It has been in production use for the last 5 years and has been used in many production environments. Zoop is designed to be fast, efficient and clean. It is easily extendable and you choose to include only the functionality you use. With Zoop an inexperienced coder can make secure web applications quickly. A more experienced coder will really appreciate how flexible Zoop is. Both experienced and inexperienced coders alike will appreciate the automations that are at his/her disposal to handle mundane tasks.
The Zoop PHP Framework is made up of many components and integrates many different projects including smarty (http://smarty.php.net) and the prototype AJAX framework. It also makes use of PEAR modules (http://pear.php.net). The efficient core components handle many of the functions you would have to code yourselves. Zoop’s integrated error handling can be configured to log errors for production environments, and is highly informative and readable which makes bugs easy to find and squash.
Latest version1.5
- PHP 4 – Yes
- PHP 5 – Yes
- MVC – Yes
- Multiple Databases – Yes
- ORM – No
- DB Objects – Yes
- Templates – Yes
- Using Smarty templating system
- Caching – Yes
- Validation – Yes
- Ajax – Yes
- Support and Prototype integration
- Auth Module – Yes
- Modules – Yes
- GuiControls (a PHP implementation of .net’s webcontrols)
- Automatic form validation and creation (including db integration)
- PDF creation
- SMTP template-based email sending
- EDP – No
Cost – Free
Official websitehttp://www.zoopframework.com/
Download URLhttp://sourceforge.net/project/showfiles.php?group_id=154726
Manual URLhttp://zoopframework.com/ss.4/6944/documentation.html
- Key Features:
- A well-organized, fully-featured front controller.
- A Smarty based view layer, enhanced with form generation and rich UI controls.
- Several integrated data model access styles.
- Automation of common mundane tasks.
- Great native libraries and friendly integration with many third-party projects.
Here is a nice article on how to intergrate Zoop with Drupal (READ HERE)
Notes:
Zoop is a framework, in every sense of the word, in that it provides both structure and libraries that you are looking for.
Zoop provides structure to applications:
The core structure to a Zoop Application is a zone. This is probably a new term to you if you never used Zoop. Zones are unique to Zoop and provide a very organized structure for the programmer to work in. Each separate major function of the program is placed into a zone. The major point is that Zoop is very organized, which translates into a more manageable codebase. In fact with Zoop you actually have to make an effort to be unorganized, because it is much easier to follow the standard.
Zoop provides functionality (objects / functions):
Because of its structure, Zoop can provide functionality in two different ways. To keep things simple I will name them as lower level and higher level functionality.
- Lower level functions can be used regardless of the structure of the application and could even be used in a non Zoop based application. A good example of this is the function append_to_file($file,$content) which opens a file and appends content to it. That function can be used anywhere, even outside of Zoop.
- Higher level functions are those that take advantage of the Zone structure provided by Zoop. Examples of these higher level functions are guiControls. GuiControls are more or less form widgets with integrated validation. They are incredibly simple to use and the validation occurs before you even see $_POST. As a programmer that is a very nice function to have. These higher level functions cannot be used without using the zone structure.
- Zoop has a nice balance of both higher and lower level functions.
URL mapping to functions:
- Part of the advantage of using Zoop is that it has a very clear and understandable URL mapping structure. Given a url, the programmer knows exactly which function is being run in a file and what parameters are being passed to that function. This makes Zoop one of the best environments to develop in. Especially for groups of programmers working on the same code base.
Template system:
- Zoop uses the excellent Smarty templating system. Zoop’s Gui component provides some extra functionality that is not provided in the core Smarty system; however for the most part it is Smarty. One of the large differences is that Smarty uses a Smarty object called $smarty by default. In Zoop that object is called $gui. For the most part it is just a little easier to type $gui than $smarty as it is fewer characters.
- Zoop is completely usable without the gui component (Smarty) and you are welcome to echo all of your content to the browser inside of your page functions, however they strongly recommend using the gui component for most projects as there are so many advantages to doing so.The usage of a templating system such as Smarty helps to promote MVC or a separation of logic and layout.
The Zcache Object
- Zoop 1.2 adds caching support to Zoop. The Caching component using the zcache object is also integrated into the zones and provides integrated caching support everywhere in your application. Zoop uses the zcache object to do all of it’s caching. This object is a special object that has functions that can be called statically or as an instantiated object.
- Storing and Retriving Data and Strings
- Zcache handles raw data (like an array, or object) differently than strings, but can cache both. In this section I will provide four examples, data, strings, intantiated, statically. Here we go. These examples will be in sudo code, so it won’t be a complete cut and paste solution, because they won’t provide the string or data or what $id to assign, but enough is there that you can modify it for your needs pretty easily.
Note: I can’t wait for 2.0 (Read Here) & (Read Here)
Now I will do some alternatives and honerable mentions, cause this thing had become a beast of a project.
Fuse
FUSE is a Model View Controller framework for PHP. Taking influence from other web frameworks, such as Ruby on Rails and CakePHP, then adding in custom and intuitive features of our own design, FUSE has developed into a robust, stable platform for MVC development using object oriented PHP.
- FUSE provides a powerful application development engine that allows you to
- Rapidly create a working Model/View/Controller structure to properly organize your application.
- Model your database tables (often automatically) to provide application-level access to data without SQL.
- Offer fully functional create, read, update, and delete functions with only a few lines of code.
- Create a user authentication (login/permissions/privileeges) scheme for your site with just a few lines of code
- Statically cache pages as HTML (or css, js, etc) for greatly increased site efficiency
- Route URIs, which eliminates the need for ugly query strings and can greatly assist with SEO
- Separate HTML presentation from application code with a powerful but easy templating engine
- Object Relational Mapping
- Create entire applications without writing any SQL queries
- Create quick, easy, customizable data access controllers in minutes
- FuseDataModel object can be used to create fully functional scaffolding for add/edit/delete/list/view operations with only a few lines of code
- Model-View-Controller architecture
- allows for separation of back-end code and front-end presentation
- Fully featured templating system
- Fully separate PHP and HTML
- Change layouts on the fly (e.g. user-facing or administrator-facing)
- Templates cached as inline PHP for maximum performance
- Builtin User object
- Login authentication
- Fine tune permissions and restrictions by individual user or group membership
- Easily manage access to controller methods with only a few lines of code
- File management functions (e.g. require_class(), require_model()) allow included files to be easily managed, and such files can even be moved without changes to existing code
- URI Router removes the need for ugly URIs and often eliminates the need for query strings
- Database abstraction layer (FuseDB) allows for portability among different database systems
- FuseBRIJ object allows PHP functions to be executed directly from Javascript, providing AJAX functionality
- Photo Album object allows simple management of photos alongside data
Official http://phpfuse.net/
Fuse v2.0 in development
Just wanted to let everyone know that while the 1.x branch of Fuse is still being updated, work has begun on Fuse 2.0, which introduces a lot of updates to the main codebase.
2.0 will be fully backward compatible with all 1.x projects, but offers key features such as:
- DB modules rewritten to make use of PDO
- Query object supports prepared statements
- Large portions of legacy code removed or changed to decrease Fuse’s overall footprint
- Templating engine made more efficient
- Pluggable authentication
Now these are not 100% frameworks but in the way they are. They meet a good amount of the criteria I look for, and they allow for rapid development of a web application. The only thing is they are designed with specific use in mind, but if thats what you need then these might be just what your looking for.
Drupal
Official releases
6.10 2009-Feb-25
5.16 2009-Feb-25
Drupal is a free software package that allows an individual or a community of users to easily publish, manage and organize a wide variety of content on a website. Tens of thousands of people and organizations are using Drupal to power scores of different web sites, including:
- Community web portals
- Discussion sites
- Corporate web sites
- Intranet applications
- Personal web sites or blogs
- Aficionado sites
- E-commerce applications
- Resource directories
- Social Networking sites
A lot of large corporations like the functionality of Drupal here is a nice list of a few:
- Fast Company
- New York Observer
- Popular Science
- Corporate AOL
- Yahoo! Research
- MTV U.K.
- Sony BMG for MyPlay
- Warner Bros. Records
And Social Networks like:
Drupal is ready to go from the moment you download it. It even has an easy-to-use web installer! The built-in functionality combined with dozens of freely available add-on modules will enable features such as:
- Content Management Systems
- Blogs
- Collaborative authoring environments
- Forums
- Peer-to-peer networking
- Newsletters
- Podcasting
- Picture galleries
- File uploads and downloads
Drupal is open-source software distributed under the GPL (“GNU General Public License”) and is maintained and developed by a community of thousands of users and developers. If you like what Drupal promises for you, please work with us to expand and refine Drupal to suit your specific needs.
General features
- Collaborative Book – A unique collaborative book feature lets you setup a “book” and then authorize other individuals to contribute content.
- Friendly URLs – Drupal uses Apache’s mod_rewrite to enable customizable URLs that are both user and search engine friendly.
- Personalization – A robust personalization environment is at the core of Drupal. Both the content and the presentation can be individualized based on user-defined preferences.
- Role based permission system – Drupal administrators don’t have to tediously setup permissions for each user. Instead, they assign permissions to roles and then group like users into a role group.
- Searching – All content in Drupal is fully indexed and searchable at all times if you take advantage of the built in search module.
User management
- User authentication – Users can register and authenticate locally or using an external authentication source like Jabber, Blogger, LiveJournal or another Drupal website. For use on an intranet, Drupal can integrate with an LDAP server.
Content management
- Polls – Drupal comes with a poll module which enables admins and/or users to create polls and show them on various pages.
- Templating – Drupal’s theme system separates content from presentation allowing you to control the look and feel of Drupal. Templates are created from standard HTML and PHP coding meaning that you don’t have to learn a proprietary templating language.
- Threaded comments – Drupal provides a powerful threaded comment model for enabling discussion on published content. Comments are hierarchical as in a newsgroup or forum.
- Version control – Drupal’s version control system tracks the details of content updates including who changed it, what was changed, the date and time of changes made to your content and more. Version control features provide an option to keep a comment log and enables you to roll-back content to an earlier version.
Blogging
- Blogger API support – The Blogger API allows your Drupal site to be updated by many different tools. This includes non-web browser based tools that provide a richer editing environment.
- Content syndication – Drupal exports your site’s content in RDF/RSS format for others to gather. This lets anyone with a News Aggregator browse your Drupal sites feeds.
- News aggregator – Drupal has a powerful built-in News Aggregator for reading and blogging news from other sites. The News Aggregator caches articles to your MySQL database and its caching time is user configurable.
- Permalinks – All content created in Drupal has a permanent link or “perma link” associated with it so people can link to it freely without fear of broken links.
Administration and analysis
- Analysis, Tracking and Statistics – Drupal can print browser-based reports with information about referrals, content popularity and how visitors navigate your site.
- Logging and Reporting – All important activities and system events are captured in an event log to be reviewed by an administrator at a later time.
- Web based administration – Drupal can be administered entirely using a web browser, making it possible to access it from around the world and requires no additional software to be installed on your computer.
Community features
- Discussion forums – Full discussion forum features are built into Drupal to create lively, dynamic community sites.
Performance and scalability
- Caching – The caching mechanism eliminates database queries increasing performance and reducing the server’s load. Caching can be tuned in real time and many high-traffic sites have performed very well under load.
Also the ability of adding Modules from a ton of categories:
- Utility
- Content
- Content display
- Third-party integration
- Administration
- Developer
- Content Construction Kit (CCK)
- Community
- Media
- User access/authentication
- User management
- Taxonomy
- Javascript Utilities
- Views
- Theme related
- e-Commerce
- Filters/editors
- Commerce / advertising
- Import/export
- File management
- Syndication
- Search
- Evaluation/rating
- Site navigation
- Organic Groups
- Security
- Location
- Event
- Multilingual
- Statistics
- RDF
- Games and Amusements
- Paging
- Performance and Scalability
In the end if I am not going to use a Framework, Drupal would be my number one choice of a pre-made web application.
Joomla
http://www.joomla.org/
Joomla is an award-winning content management system (CMS), which enables you to build Web sites and powerful online applications. Many aspects, including its ease-of-use and extensibility, have made Joomla the most popular Web site software available. Best of all, Joomla is an open source solution that is freely available to everyone.
Joomla is used all over the world to power Web sites of all shapes and sizes.
For example:
- Corporate Web sites or portals
- Corporate intranets and extranets
- Online magazines, newspapers, and publications
- E-commerce and online reservations
- Government applications
- Small business Web sites
- Non-profit and organizational Web sites
- Community-based portals
- School and church Web sites
- Personal or family homepages
Who uses Joomla?
- United Nations (Governmental organization) – http://www.unric.org
- MTV Networks Quizilla (Social networking) – http://www.quizilla.com
- L.A. Weekly (Online publication) – http://www.laweekly.com
- IHOP (Restaurant chain) – http://www.ihop.com
- Harvard University (Educational) – http://gsas.harvard.edu
- Citibank (Financial institution intranet) – Not publicly accessible
- The Green Maven (Eco-resources) – http://www.greenmaven.com
- Outdoor Photographer (Magazine) – http://www.outdoorphotographer.com
- PlayShakespeare.com (Cultural) – http://www.playshakespeare.com
- Senso Interiors (Furniture design) – http://www.sensointeriors.co.za
Joomla is designed to be easy to install and set up even if you’re not an advanced user. Since Joomla is so easy to use, as a Web designer or developer, you can quickly build sites for your clients. Then, with a minimal amount of instruction, you can empower your clients to easily manage their own sites themselves. If your clients need specialized functionality, Joomla is highly extensible and thousands of extensions (most for free under the GPL license) are available in the Joomla Extensions Directory.
Many companies and organizations have requirements that go beyond what is available in the basic Joomla package. In those cases, Joomla’s powerful application framework makes it easy for developers to create sophisticated add-ons that extend the power of Joomla into virtually unlimited directions.
The core Joomla framework enables developers to quickly and easily build:
- Inventory control systems
- Data reporting tools
- Application bridges
- Custom product catalogs
- Integrated e-commerce systems
- Complex business directories
- Reservation systems
- Communication tools
Features :
User Management
- Joomla has a registration system that allows users to configure personal options. There are nine user groups with various types of permissions on what users are allowed to access, edit, publish and administrate.
- Authentication is an important part of user management and Joomla support multiple protocols, including LDAP, OpenID, and even Gmail. This allows users to use their existing account information to streamline the registration process.
Media Manager
- The Media Manager is the tool for easily managing media files or folders and you can configure the MIME type settings to handle any type of file. The Media Manager is integrated into the Article Editor tool so you can grab images and other files at any time.
Language Manager
- There is international support for many world languages and UTF-8 encoding. If you need your Web site in one language and the administrator panel in another, multiple languages are possible.
Banner Management
- It’s easy to set up banners on your Web site using the Banner Manager, starting with creating a client profile. Once you add campaigns and as many banners as you need, you can set impression numbers, special URLs, and more.
Contact Management
- The Contact Manager helps your users to find the right person and their contact information. It also supports multiple contact forms going to specific individuals as well as groups.
Polls
- If you want to find out more about your users, it’s easy to create polls with multiple options.
Search
- Help navigate users to most popular search items and provide the admin with search statistics.
Web Link Management
- Providing link resources for site users is simple and you can sort them into categories, even count every click.
Content Management
- Joomla’s simplified three-tiered system of articles makes organizing your content a snap. You can organize your content any way you want and not necessarily how it will be on your Web site. Your users can rate articles, e-mail them to a friend, or automatically save a PDF (with UTF-8 support for all languages). Administrators can archive content for safekeeping, hiding it from site visitors.
- On public Web sites, built-in e-mail cloaking protects email addresses from spambots.
- Creating content is simple with the WYSIWYG editor, giving even novice users the ability to combine text, images in an attractive way. Once you’ve created your articles, there are a number of pre-installed modules to show the most popular articles, latest new items, newsflashes, related articles, and more.
Syndication and Newsfeed Management
- With Joomla, it’s easy to syndicate your site content, allowing your users to subscribe to new content in their favorite RSS reader. It’s equally easy to integrate RSS feeds from other sources and aggregate them all on your site.
Menu Manager
- The Menu Manager allows you to create as many menus and menu items as you need. You can structure your menu hierarchy (and nested menu items) completely independent of your content structure. Put one menu in multiple places and in any style you want; use rollovers, dropdown, flyouts and just about any other navigation system you can think of. Also automatic breadcrumbs are generated to help navigate your site users.
Template Management
- Templates in Joomla are a powerful way to make your site look exactly the way you want and either use a single template for the entire site or a separate template for each site section. The level of visual control goes a step further with powerful template overrides, allowing you to customize each part of your pages.
Integrated Help System
- Joomla has a built-in help section to assist users with finding what they need. A glossary explains the terms in plain English, a version checker makes sure you’re using the latest version, a system information tool helps you troubleshoot, and, if all else fails, links to a wealth of online resources for additional help and support.
System Features
- Speedy page loads are possible with page caching, granular-level module caching, and GZIP page compression.
- If your system administrator needs to troubleshoot an issue, debugging mode and error reporting are invaluable.
- The FTP Layer allows file operations (like installing Extensions) without having to make all the folders and files writable, making your site administrator’s life easier and increasing the security of your site.
- Administators quickly and efficiently communicate with users one-on-one through private messaging or all site users via the mass mailing system.
Web Services
- With Web services, you can use Remote Procedure Calls (via HTTP and XML). You can also integrate XML-RPC services with the Blogger and Joomla APIs.
And more modules then I can even count……….
Now I use to be a huge Joomla advocate I will admit, but I was young and stupid. I know better. I am not saying its not a good platform, It does work great for somethings but it is not great for everything.
Wordpress
WordPress started its trek in 2003 with a single bit of code to enhance the typography of everyday writing and with fewer users than you can count on your fingers and toes. Since then it has grown to be the largest self-hosted blogging tool in the world, used on hundreds of thousands of sites and seen by tens of millions of people every day.
They offer a feature set with WordPress on par or better than any other software of its kind. They are committed to making the latest blogging technology available to our users (such as Trackback) and taking it a step further (such as with Pingback). You can rest assured that with WordPress you will be on the cutting edge of the technology available.
The following is a list of some of the features that come standard with WordPress, however there are literally hundreds of plugins that extend what WordPress does, so the actual functionality is nearly limitless. You are also free to do whatever you like with the WordPress code, extend it or modify in any way or use it for commercial projects without any licensing fees. That is the beauty of free software, free meaning not only price but also the freedom to have complete control over it.
Features:
- Full standards compliance — They have gone to great lengths to make sure every bit of WordPress generated code is in full compliance with the standards of the W3C. This is important not only for interoperability with today’s browser but also for forward compatibility with the tools of the next generation. Your web site is a beautiful thing, and you should demand nothing less.
- No rebuilding — Changes you make to your templates or entries are reflected immediately on your site, with no need for regenerating static pages.
- WordPress Pages — Pages allow you to manage non-blog content easily, so for example you could have a static “About” page that you manage through WordPress. For an idea of how powerful this is, the entire WordPress.org site could be run off WordPress alone. (They don’t for technical mirroring reasons.)
- WordPress Links — Links allows you to create, maintain, and update any number of blogrolls through your administration interface. This is much faster than calling an external blogroll manager.
- WordPress Themes — WordPress comes with a full theme system which makes designing everything from the simplest blog to the most complicated webzine a piece of cake, and you can even have multiple themes with totally different looks that you switch with a single click. Have a new design every day.
- Cross-blog communication tools— WordPress fully supports both the Trackback and Pingback standards, and they are committed to supporting future standards as they develop.
- Comments — Visitors to your site can leave comments on individual entries, and through Trackback or Pingback can comment on their own site. You can enable or disable comments on a per-post basis.
- Spam protection — Out of the box WordPress comes with very robust tools such as an integrated blacklist and open proxy checker to manage and eliminate comment spam on your blog, and there is also a rich array of plugins that can take this functionality a step further.
- Full user registration — WordPress has a built-in user registration system that (if you choose) can allow people to register and maintain profiles and leave authenticated comments on your blog. You can optionally close comments for non-registered users. There are also plugins that hide posts from lower level users.
- Password Protected Posts — You can give passwords to individual posts to hide them from the public. You can also have private posts which are viewable only by their author.
- Easy installation and upgrades — Installing WordPress and upgrading from previous versions and other software is a piece of cake. Try it and you’ll wonder why all web software isn’t this easy.
- Easy Importing — They currently have importers for Movable Type, Textpattern, Greymatter, Blogger, and b2. Work on importers for Nucleus and pMachine are under way.
- XML-RPC interface — WordPress currently supports an extended version of the Blogger API, MetaWeblog API, and finally the MovableType API. You can even use clients designed for other platforms like Zempt.
- Workflow — You can have types of users that can only post drafts, not publish to the front page.
- Typographical niceties — WordPress uses the Texturize engine to intelligently convert plain ASCII into typographically correct
- XHTML entities. This includes quotes, apostrophes, ellipses, em and en dashes, multiplication symbols, and ampersands. For information about the proper use of such entities see Peter Sheerin’s article The Trouble With Em ’n En.
- Intelligent text formatting — If you’ve dealt with systems that convert new lines to line breaks before you know why they have a bad name: if you have any sort of HTML they butcher it by putting tags after every new line indiscriminately, breaking your formatting and validation. Their function for this intelligently avoids places where you already have breaks and block-level HTML tags, so you can leave it on without worrying about it breaking your code.
- Multiple authors — WordPress’ highly advanced user system allows up to 10 levels of users, with different levels having different (and configurable) privileges with regard to publishing, editing, options, and other users.
- Bookmarklets — Cross-browser bookmarklets make it easy to publish to your blog or add links to your blogroll with a minimum of effort.
- Ping away — WordPress supports pinging Ping-O-Matic, which means maximum exposure for your blog to search engines.
There’s much more, but these are the highlights. If there’s something that you really want, submit a request on the support forums and there’s a good chance someone will whip it up for you.
First off I will have to say when I started this trek into frameworks I was thinking this will be simple, refreshing and enlightening all at the same time. Yeah I was wrong! But I said I will do it so part two is coming to a end. As for my thoughts on PHP Frameworks, there are a ton out there, I read and researched over five hundred alone. I drilled down through them picking them off one by one. The biggest thing I look for is a sense of community and support, developed on sound web technology, developing to the latest standards and looking to the future of web development. If you choose anyone of the above frameworks you will already be in good hands. As I sit here and think about what I have seen, read, and tested over the last couple days I am still amazed about the amount of stuff out there to develop a web application. So here is what I want you to do. Go out and look at some new things and try something different and innovative and I will start on part three of this monster. Thanks for reading and please leave a comment and share this with you friends. Till part three……..
Tags: ActiveRecord, AJAX, CakePHP, CodeIgniter, database, Drupal, EDP, Event Driven Programming, FUSE, Joomla, Model-View-Controller, mvc, object-record mapper, orm, php4, php5, Symfony, Templates, Wordpress, Yii, Zend, Zend Framework, Zoop, Zoop Object Oriented Php Framework
Thanks – cool post
. I have recently decided to dive head first into web development. At first I used vi and developed everything from scratch. I knew there had to be a better way, so searched for frameworks and came across your post. It was thanks to this post that I was enlightened with the Yii framework. I'm still in the learning phase and am loving it. Yii have now released version 1.1.0. Thanks to Yii my transition into the realm of web development has been a very pleasant one.
Buy:SleepWell.Lipothin.Buspar.Aricept.Cozaar.Benicar.Nymphomax.Zocor.Lipitor.Lasix.Acomplia.Seroquel.Zetia.Prozac.Wellbutrin SR.Female Cialis.Advair.Female Pink Viagra.Amoxicillin.Ventolin….
Buy:Cozaar.Wellbutrin SR.Lipitor.Female Pink Viagra.Lasix.Nymphomax.Benicar.Acomplia.Ventolin.Amoxicillin.Advair.Aricept.Seroquel.SleepWell.Prozac.Zocor.Buspar.Lipothin.Female Cialis.Zetia….
handle http://wnoalterrc7.BESTPARTSPLUS.INFO/tag/party+handle+noalter+shower/ : noalter…
handle…