diff options
author | Freya Murphy <freya@freyacat.org> | 2024-12-23 10:39:16 -0500 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2024-12-23 10:39:16 -0500 |
commit | de9cae795f93d03e68d965c59af4b21d96df4ec7 (patch) | |
tree | ad4f903c04630b3b92e2b9b5d06d5b8647d299bb /src/_controller.php | |
parent | license (diff) | |
download | crimson-de9cae795f93d03e68d965c59af4b21d96df4ec7.tar.gz crimson-de9cae795f93d03e68d965c59af4b21d96df4ec7.tar.bz2 crimson-de9cae795f93d03e68d965c59af4b21d96df4ec7.zip |
initial
Diffstat (limited to 'src/_controller.php')
-rw-r--r-- | src/_controller.php | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/_controller.php b/src/_controller.php new file mode 100644 index 0000000..6c829a0 --- /dev/null +++ b/src/_controller.php @@ -0,0 +1,66 @@ +<?php +/// CRIMSON --- A simple PHP framework. +/// Copyright © 2024 Freya Murphy <contact@freyacat.org> +/// +/// This file is part of CRIMSON. +/// +/// CRIMSON is free software; you can redistribute it and/or modify it +/// under the terms of the GNU General Public License as published by +/// the Free Software Foundation; either version 3 of the License, or (at +/// your option) any later version. +/// +/// CRIMSON is distributed in the hope that it will be useful, but +/// WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/// GNU General Public License for more details. +/// +/// You should have received a copy of the GNU General Public License +/// along with CRIMSON. If not, see <http://www.gnu.org/licenses/>. + +abstract class Controller extends Base { + + // used by lib meta + public array $CRIMSON_data = array(); + + /** + * Default index for a app, empty + */ + public function index(): void {} + + /** + * Lodas a view + */ + protected function view(string $CRIMSON_name, array $data = array()): void + { + $CRIMSON_path = WEB_ROOT . '/_views/' . $CRIMSON_name . '.php'; + $this->CRIMSON_data = $data; + + if (!is_file($CRIMSON_path)) { + CRIMSON_ERROR("View '{$CRIMSON_name}' does not exist!"); + return; + } + + extract($this->CRIMSON_data); + require($CRIMSON_path); + } + + /** + * Redirectes to a link + */ + protected function redirect(string $link): never + { + header('Location: '. $link, true, 301); + CRIMSON_DIE(); + } + + /** + * Loads a erorr page with a given + * error code + */ + protected function error(int $code): never + { + // does not return + ROUTER->handle_error($code); + } + +} |