A PHP MVC Framework from Scratch.
No Libraries. No Dependencies. Just Pure PHP.
Boomer PHP MVC is an Framework made by 「 Shawn D'silva 」to learn PHP and core web development and software engineering concepts like Object Oriented programming, Model-View-Controller architecture, AJAX programming etc
Without the aid of a pre-existing framework like Laravel, or any external packages
BOOMER is built with the classic Linux, Apache, MySQL, PHP stack inside Docker containers on an Ubuntu host
On the Front-End BOOMER uses JQuery, SASS and CSS3 FlexBox with AJAX calls wherever required, The CSS is all custom with no Bootstrap etc used
Boomer PHP MVC implements most common sense Web Framework features from scratch, like a Router, Middlewares, Input Validation, SQL Query Builder and Sessions based Authentication
To demonstrate these features, this demo website is structured as a blogging platform, supporting multiple users, who can Create, View, Edit and Delete their own Blog posts, Comment on other's blog posts, edit & delete said comments, and customize their own user profile with a bio and a display picture
These operations take place in a standard page based form, or using AJAX to update content without a page refresh
Core Business Logic is encapsulated in a series of Controllers, Database interactions in Models and Front-End related functions in Views
A parameterized router that abstracts the resource from the URI that the user enters, and provides the values of any parameter specified to a route's respective controller
A safe Query Builder for MySQL that uses PDO under the hood, enabling developers to write legible, modular SQL queries instead of raw SQL
Uses Sessions for persistence, with user session data stored in DB and only session ID stored in cookie. Also stores user passwords securely hashed in the database
All User input is validated for correctness according to the developers needs and sanitized from malicious attempts at code injection
Middleware can be applied to any route, for any processing the app may require prior to being passed on to its respective controller