Simple PHP MVC e-commerce, Project Pemrograman Berbasis Website - Tanpa menggunakan library/composer.
- Dilarang memakai library/composer.
- Manajemen stok barang: 25 pts
- Prosedur Penambahan barang baru
- Prosedur Update barang
- Prosedur Hapus stok barang
- Mekanisme penjualan barang secara online: 25 pts
- Prosedur keranjang belanja
- Invoice & nota
- Rekap harian / bulanan / tahunan
- UI UX: 25 pts
- Design DB, Keamanan, Auth, etc: 25 pts
Adapun materi dan refrensi yang didapatkan untuk membangun project ini:
- Reflection Class - ORM
- Simple Routing
- Create your own MVC Framework in PHP
- How To Start Your Own PHP MVC Framework In 4 Steps?
- Implementation of dependency injection in php
- How to invoke method on class with dynamicall generated name via reflection
- PHP Session
- (The only proper) PDO tutorial
- Passing a variable from one php include file to another: global vs. not
- PHP Magic Methods
List yang sudah diimplementasi:
- Mengarahkan semua request ke satu file php
- Routing (Url rewrite)
- Service Container
- Dependency Injection
- Session (Session handling)
- Request (Incoming request handler)
- Database (Menggunakan PDO)
- Helpers
- Simple Closure Middleware (Fungsi pada routing yang akan dieksekusi sebelum meng-invoke controller/closure)
- Middleware (Berupa class middleware)
- View Templating (Memanfaatkan fungsi include, extract, serta RegEx)
- Front page
- Listing Products
- Cart Session
- Authentication
- User - Dashboard
- User - View Invoices
- User - Redeem Games
- Admin - Dashboard
- Admin - Manage Products
- Admin - Manage Orders
- Admin - Orders Recap
- Admin - Manage Categories
- Admin - Manage Developers
Alur / Life-cycle dari Request -> Response
- Pipeline semua request ke public/index.php
- Register Services ke ServiceContainer. (Yang sudah di register: Request, Session, & DB)
- ROUTING: Regex url dengan routing yang sudah terdapat di routes.php
- ROUTING: Cari Parameter dengan tipe Class untuk di inject dengan Service yang tersedia di ServiceContainer.
- ROUTING: Invoke middleware yang telah didefinisikan pada routes
- ROUTING: Invoke controller setelah mengeksekusi middleware
- CONTROLLER: Mengeksekusi isi method dari controller.
- VIEW: Me render view. (Opsional)
- Exception: Menghandle apabila terjadi exception ketika proses eksekusi pada controller
Thanks to Colorlib & Stisla.