Design, development and implementation of an application is no more a hard brain process in current web market lots of open source options. We have lots of open source frameworks available for free to begin our application development cycle. Most of the features will be already defined in these frameworks, only part we need to concentrate will customization according to our needs. Based on the requirements on desk one can first decide which frameworks to use and then decide on plugins which needs to used for customization,this will save a hell lot of time and cost.
Personally i prefer plugin model which helps developers to create their custom code and can easily pushed to existing system without altering the actual framework. Also i prefer MVC(Model View Controller) which separates UI, Middle-Tier and DataLayer that take programming to a higher level of scalability.

So before deciding your framework, first finalize our requirement. Whether we need a CMS website or an Application?

CMS:- Content management system, display data(text,images,..) in proper format and can be administered. Usually CMS sites will be read-only system, but now adays interaction level have increased a lot like adding comments, rating..etc.

Application:- by the word Application means the website will have a special purpose. for eg. gmail, used for mails.

In the current web market the difference between CMS and Application is diminishing. For instanse, wordpress is a very powerful CMS open source system which supports plugin model. I was amazed when started working with wordpress and slowly realized that one can create any website with wordpress, using the plugins available in market and with your developing experience. So if you want to create an application you can always create it using powerful CMS system and with your development skills.

But if you use CMS for creating an Application there will be no scalability or portability and your Model will be complex. By scalability and portability, i meant we cant use the same database for using the application in different portable devices(IPAD, Android,..etc).

Model:- this is the architecture used for structuring and  interacting with backend(database).
For eg: Assume we have an application on  how a Desktop Computer works. Here Structuring means separate data models for Computers, MotherBoards, Processors, Monitors. Interacting between these models is important for proper functioning of Computer and CRUD operations for these models.

ORM(Object Relational Mapping)

Next important part of any application will be interaction with database. How do we access database and how can ease the process of interaction between our application & database?

To ease our interaction we generally use ORM techniques. we have lots of options as packages, codes, methodologies based on ORM. Learn more on ORM using wiki or google.

Active Record Database Pattern, PHP Record Pattern, Doctrine, many more options are ready to use in all open source frameworks or  just a matter of time that you need to integrate with your framework.

Database

Most of the frameworks support MYSQL Database which is open source and server cost is less when compared to Oracle or MS SQL Server. All existing systems are slowly migrating to MYSQL database because of cost.
Question that comes to every clients mind will be, Is MYSQL so good & secure??? The best answer you can give is; Check Facebook, Twitter, Flickr,.. all are these are using MYSQL as database. All three is having such a huge database, its amazing that these are top website in online market used by millions and more…

PHP Frameworks –

  1. WordPress
  2. CodeIgniter
  3. CakePHP
  4. MediaWiki
  5. Joomla
  6. Zend
  7. Symfony
  8. Yii

There are more frameworks, Above listed frameworks are those which i have worked and have got hands on experience. I will say WordPress is easy to implement for CMS sites and a developer can even use WordPress for any sort of sites or application, just need to understand the concept and architecture of WordPress, But there will be no scalability. CodeIgniter is simple to implement and easier to install and have got lots of modules which you can use and integrate easily.

Choosing your Framework

I have my list of points before i choose my framework.

  1. Purpose
    1. CMS – Definitely WordPress 🙂
    2. Application which dont need any scalability, like say you want to simple shopping cart site – Still WordPress is best option. You can choose shopping cart plugin for wordpress and ask a developer for creating the same according to your requirement which should cost few dollars 🙂
    3. Application which need scalability and lots of functionality, CodeIgniter is best option.

Since am comfortable with both WordPress and CodeIgniter doesnt mean you need to use it. So following is the checklist which can guide to choose your framework,

  1. Need to check Registration,Login (Authorization and Authentication).
    1. Also OpenID option, so users with FaceBook, Twitter account wont have to register again in site, can use those accounts to login to our website.
  2. Comment module/plugin.
  3. Administration module.
  4. Cache Options.
  5. Include custom HMTL content.
  6. Payment Integration option like paypal.
  7. SEO Integration.
  8. Browser compatibilty.
  9. Speed Optimization techniques.
  10. Plugin or Module architecture preferably MVC pattern.

 

Hope this article is helpful. i will keep adding contents if i get more knowledge on php open source framework.