dir = $dir; $this->config = $config; $this->database = $database; $this->session = $session; $this->user = $user; } /** * Grab model * * TODO: have a look to see if this might name conflict with anything and * maybe also throw an exception if the model class is not found within the file */ public function model(string $model, $injection = NULL): object { // require model file $path = $this->dir . '/model/' . $model . '.php'; if (!file_exists($path)) { throw new Exception("Model does not exist"); } require $path; // instantiate model if (!$injection) { $injection = $this->database; } return new $model($injection); } /** * Render given view */ public function view(string $view, array $data = []): void { // import variables into the current symbol table from an array extract($data); // require view file $path = $this->dir . '/view/' . $view . '.php'; if (!file_exists($path)) { throw new Exception("View does not exist"); } require $path; } /** * Convert data into json response */ public function api(mixed $data, int $status_code = 200): void { // set headers http_response_code($status_code); header('Content-type: application/json'); // convert and respond with data echo json_encode($data); die(); } /** * Redirect to given url */ public function redirect(string $url): void { header("Location: $url"); die(); } }