About blackCurrent
A minimal PHP 8.1+ framework — barebones, fast, secure.
How a request flows
index.phpregisters the autoloader and callsBoot::run().Bootloads config, sends security headers, starts the session, captures the request.Url::parse()splits the path intocurrentClass/currentFunction/param.Dispatchermaps/about→App\Controllers\About.- The controller calls
$this->view->render('index'), the View engine finds the template via cascade. Controller::renderPage()wraps the body inlayouts/appwith header + footer.- Boot echoes the output. Add
?_speed=1from a safe IP for a per-stage profile.
Template cascade
When rendering index from the About controller, View looks in order:
app/Views/about/index.php← this page (most specific)app/Views/index.php(project default)core/Views/index.php(framework fallback)
Override only what you need; the rest cascades up.
Where things live
blackCurrent/
├── index.php ← front controller (15 lines)
├── config/config.php ← all configuration
├── core/ ← framework code — don't edit
│ ├── Mvc/ Controller / View / Model / ApiController / AdminController
│ ├── Http/ Request / Response / Csrf / Headers
│ ├── Routing/ Url / Dispatcher
│ ├── Db/ Connection / Database
│ ├── Cache/ Redis / APCu / File / Null
│ ├── Security/ Sanitize / Session / Auth / CleanInput
│ ├── Debug/ Logger / Profiler / ErrorHandler
│ └── Ab/ Bucket
└── app/ ← YOUR code goes here
├── Controllers/ page controllers (Home, About, Contact, …)
├── Models/ data-access classes
├── Views/ templates
│ ├── layouts/ page shells (app, admin)
│ ├── partials/ shared chunks (header, nav, footer)
│ └── <controller>/ per-controller views
├── Api/V1/ JSON API endpoints
└── Admin/ admin-gated pages