I haven't done any PHP coding for a few years and I have not, as yet, used a framework.
Now I have a new project in mind and think that a well tested framework would save me a lot of the time that I have previously invested in reinventing a bug-ridden version of the wheel.
The PHP part of the project will do the following:
receive HTTP POST requests, look into a database (probably MySql, maybe Sqlite) and return a URl which it retrieves.
allow users to log in (checking credentials with the database), ans establish a session (which I might decide to have time out after a period of inactivity).
- users can then view a dashboard of their data & activity which I will build from the database.
- I will need an admin app for my own use, to allow me to add/modify/delete users & their data.
That all sounds rather run of the mill, which means that there ought to be a good framework for me to use.
- Something free for commercial use (in case I am ever dumb enough to try to charge for it), without catches which would mean that I would have to open source my code (I might yet decide to do so, but I want to keep my options open).
- Stable & well tested, with a good user support community.
- Handles common functionality such as user login, session management (including timeout logoff), etc
- Provides good security with minimal effort on my part
- Possibly a form builder, if any framework offers such a thing, where I can drag & drop and "draw" my form, then generate PHP code for it.
- Perhaps some nice report generation, with graphs, pie charts, histograms, etc
- In fact anything that helps me make a slick GUI as I am lousy at that.
- Any other slick features which might make it attractive, although consideration should also be laid on learning curve and how it helps aid development, speeding it up / making it less error prone & easier to test and debug.
Which framework do you recommend?
Despite awarding the bounty, much googling leads me to believe that Lavarel is now in the ascendency over Code Igniter. I have decided to move the presentation and most of the logic client-side, using AngularJs, leaving only a thin database access layer on the server to be accessed by Ajax.