On Friday, I posted a tweet.

Good morning, still wondering what is the best (and common) technique to learn hell lot of #frameworks in #PHP

That was just casual tweet followed after some other instances. But when I reviewed my week’s tasks (it include nearly everything I did over weekend) I realize I’m complaining. I immediately replied to myself:

@kapilsharmainfo (To self) It’s easy to point out problem but how many of us work to fix it? Fix it or don’t complain about it. #WeekendTask

That mean either I should try to fix it or just keep quite. This is the starting point to think how I can help to fix this problem. There are many huddles like:

  • PHP frameworks lie in three categories; Micro framework, Full fledges framework and component based.
  • Their target audience is different, some framework provide basic features and target small to medium projects while other target enterprise applications. How a common solution is provided for such a wide targets.
  • There are many kind of people, some like to go through theories first and someone prefer to start doing things first and prefer learning by doing things. There are others who go for mixed approach. There are many who prefer to go through any available project example and learn by going through existing code. Symfony really made it easier through jobeet project and frankly I’m impressed by that approach.

Obviously no one can give one common solution. Still after considering quite a few facts, I personally feel if we have one example project implementation with us, learning become easier. So my Fix is:


Pick up one example project and implement it in all the frameworks.

So what the project should be? Here is my definition of what the example project should be:

  • Purpose of project is not to solve any business problem but to demonstrate how to implement it in given framework. But all projects solve some business problems, if the example project will not solve any business problem, it will not be a good example project.
  • So even when main purpose is to demonstrate how framework is used to implement project, example project must solve some business problem as secondary objective. So first need to create a dummy business requirement, which we will implement during project.
  • Main features of project must include:
    • Some static page, all projects have static pages like about us, contact us etc.
    • Project must follow MVC (HMVC is out of scope for now or it will make project too complex)
    • Database interaction is obvious. If possible, make different projects for native PDO, active records and ORM libraries.
    • Database must be relational or NoSQL.
    • User registration is required.
    • Email required, even if it is simply for authentication purpose.
    • Implement common security feature like XSS and CSRF. Target audience includes students and they must be educated by such things.

Once we have a roadmap of what needs to be achieved, we can now define requirements. So my first draft of requirements is as follow:

Requirements (version 1):

  • Name of Project: KapsBudget
  • Description: It is personal budget application. Application must be able to maintain home budget of a family.
  • It must have option to define incomes.
  • It must have option to divide expanses in categories.
  • It must have option to define monthly budget.
  • Once monthly budget is defined, it must have option to add daily expense as per category.
  • It must produce some reports to easily track budget.

Please note again, although we will achieve above requirements, our target is not to make above application. Main objective is to learn a framework by implementing the project. Above application is just a way to achieve primary target.

Now we have our major requirements ready. Further discussion will happen in framework specific tutorial. However common database and HTML design for all frameworks will be available on the trunk/master of Github project. Framework specific work will be available on branch like ‘codeigniter’.

Github link: https://github.com/kapilsharma/KapsBudget