I need a basic PHP framework created. I know there are other frameworks out there, but I want a framework created that is super simple and very well documented. Here is a foundation of what I want the framework to do. I guess it should be OO PHP as well.
Please do not send over links to flash websites. I am only interested in seeing links where you have created a PHP framework or sites that have used a framework.
Please send over any questions and I will add my comments to the project for everyone to see. I am not sure if it is feasible, but I would like to have this framework ready to go within 7 days after I have chosen a freelancer. Be upfront me with me on the time. If it is going to take longer to do then we can discuss a suitable timeline.
The features below are features found in [url removed, login to view]
Lastly: I am open to you using an existing framework and altering it to suit my needs ONLY if you send me the URL via the message board and I can review to make sure I can understand it easily enough. I don't want any of the monster frameworks like CakePHP or CodeIgniter. I just want a very basic easy to understand framework that is easy to use and only contains features that I need.
I am also open to suggestions if you have any other cool ideas or I forgot any core functionality.
A. Must be created for PHP 5.x
B. We must discuss any PHP Extensions or Libraries that would need to be installed for the framework to install.
C. Framework needs to be able to handle Ajax Requests as well as regular Get/Post Requests.
1. Needs to be MVC Style
Controllers/[url removed, login to view]
Models/[url removed, login to view]
Views/ViewName/[url removed, login to view]
2. Get / Post Vars stored in PARAMS variable
3. Helper Functions:
isPost (Is it a Post Request)
isGet (Is it a Get Request)
isAjax (Is it an Ajax Request)
ValidatePresenceOf (Variable Exists and is not blank)
ValidateLengthOf (Min / Max)
isChecked (CheckBox Checked)
IsCheckedMulti (Pass in value and checks to see if value is in list of values
RandomText (Min / Max, Upper/Lower, Letters/Numbers)
4. Configuration - I want the framework to be convention over configuration, but we do need a file for DB information
5. Scaffolding Feature -- given the database database table it creates the module / view / controller pages add page / edit / delete pages as well as the list pages. Needs to handle each of the different form elements. Need to be able to configure how the from row is outputted like:
<li><label></label><input type="text" name="name" value=""></li>
6. Needs to support caching
7. Different Modes - Development / Production Mode
8. Reload Application link that will reset the application / caching
9. Validation, I would like to have the script use the MySQL database schema to help with the validation of fields after they are submitted, Ex. Numeric , Text no longer than 100 chars etc
10. Unit Testing Model - Easy way to setup unit testing
11. When in development mode it shows queries, variables etc at the bottom of the page
12. Cookie and Session based.
13. Email Notifications of Errors
14. Friendly error message screens
15. Support Mod Rewrite. Ex /[url removed, login to view] = [url removed, login to view] I know this has to do with apache, but want to make sure that the framework will work like that.
16. You are to provide a sample application that uses all the different features mentioned above. Needs to include a signup page / login page / protected area page.
17. Email function to provide a template file and send emails.
18. A Queue system. The idea here would be a high performance site we would assign tasks to the queue after the user has submitted a form and the task manager would be run separately processing tasks.
What is expected at the completion of this project:
1. Full Rights to the Code are assigned over to me.
2. Framework code and sample application well documented in the code.
3. Documentation outlining all the features
4. Tutorial on how to get started.
5. 6 months worth of bug fixes free of charge. Just bugs, when I need to add features I will open another project