From 5b1f18a9357e81dab9a391d2d1d849f9c3a6507d Mon Sep 17 00:00:00 2001 From: William Date: Tue, 29 Nov 2022 12:49:29 +0000 Subject: [PATCH] Init --- README.md | 3 + app/WillySoft/Http/ErrorHandler.php | 54 +++++++++++++ app/WillySoft/Http/Route.php | 81 ++++++++++++++++++++ public/index.php | 56 ++++++++++++++ public/static/img/stars.gif | Bin 0 -> 20978 bytes public/static/img/welcome-to-willy.club.gif | Bin 0 -> 22062 bytes public/static/style/main.css | 5 ++ routes/start.php | 14 ++++ views/errors/404.php | 12 +++ views/errors/500.php | 28 +++++++ views/pages/home.php | 4 + views/templates/footer.php | 3 + views/templates/header.php | 16 ++++ 13 files changed, 276 insertions(+) create mode 100644 README.md create mode 100644 app/WillySoft/Http/ErrorHandler.php create mode 100644 app/WillySoft/Http/Route.php create mode 100644 public/index.php create mode 100644 public/static/img/stars.gif create mode 100644 public/static/img/welcome-to-willy.club.gif create mode 100644 public/static/style/main.css create mode 100644 routes/start.php create mode 100644 views/errors/404.php create mode 100644 views/errors/500.php create mode 100644 views/pages/home.php create mode 100644 views/templates/footer.php create mode 100644 views/templates/header.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb3f7ca --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Very kewl website + +Made by yours truly \ No newline at end of file diff --git a/app/WillySoft/Http/ErrorHandler.php b/app/WillySoft/Http/ErrorHandler.php new file mode 100644 index 0000000..9025ca8 --- /dev/null +++ b/app/WillySoft/Http/ErrorHandler.php @@ -0,0 +1,54 @@ +Error[$errno]: $errstr in $errfile at line $errline"; + } + + private static function exception($exception) + { + self::$error_messages[] = "Uncaught Exception: " . $exception; + } + + private static function shutdown(callable $callback) + { + if (!self::$error_messages) { + return; + } + + // remove current output to be replaced by error page + ob_end_clean(); + + http_response_code(500); + header_remove(); + + $callback(self::$error_messages); + } +} \ No newline at end of file diff --git a/app/WillySoft/Http/Route.php b/app/WillySoft/Http/Route.php new file mode 100644 index 0000000..48ae9fa --- /dev/null +++ b/app/WillySoft/Http/Route.php @@ -0,0 +1,81 @@ +p-7Pe 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 T8kmvf!ye%yV*CGCjCcPR^;h=3 literal 0 HcmV?d00001 diff --git a/public/static/img/welcome-to-willy.club.gif b/public/static/img/welcome-to-willy.club.gif new file mode 100644 index 0000000000000000000000000000000000000000..5369ba196dcb50ea94d051c1bf742c4ebe1e0cf9 GIT binary patch literal 22062 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 OxR(VdPr_h;+5Z9iY^YKI literal 0 HcmV?d00001 diff --git a/public/static/style/main.css b/public/static/style/main.css new file mode 100644 index 0000000..76c7fba --- /dev/null +++ b/public/static/style/main.css @@ -0,0 +1,5 @@ +body { + background-color: black; + background-image: url('../img/stars.gif'); + color: bisque; +} \ No newline at end of file diff --git a/routes/start.php b/routes/start.php new file mode 100644 index 0000000..dd895fb --- /dev/null +++ b/routes/start.php @@ -0,0 +1,14 @@ + $error_messages]); +}); + +Route::get('/', fn() => view('pages/home')); + +// since no route was matched we show a page not found error +http_response_code(404); +view('errors/404'); \ No newline at end of file diff --git a/views/errors/404.php b/views/errors/404.php new file mode 100644 index 0000000..bfb13e6 --- /dev/null +++ b/views/errors/404.php @@ -0,0 +1,12 @@ + + + + + + + Page not found + + +

Page not found

+ + \ No newline at end of file diff --git a/views/errors/500.php b/views/errors/500.php new file mode 100644 index 0000000..c5b2d6d --- /dev/null +++ b/views/errors/500.php @@ -0,0 +1,28 @@ + + + + + + Internal Server Error 500 + + + +

Error!!1 (×﹏×)

+ +
+ + + \ No newline at end of file diff --git a/views/pages/home.php b/views/pages/home.php new file mode 100644 index 0000000..db04661 --- /dev/null +++ b/views/pages/home.php @@ -0,0 +1,4 @@ + 'Home'])?> + + + \ No newline at end of file diff --git a/views/templates/footer.php b/views/templates/footer.php new file mode 100644 index 0000000..d378fbe --- /dev/null +++ b/views/templates/footer.php @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/views/templates/header.php b/views/templates/header.php new file mode 100644 index 0000000..f5016ad --- /dev/null +++ b/views/templates/header.php @@ -0,0 +1,16 @@ + + + + + + + <?=$title?> + + + + + + Welcome to willy.club + + +
\ No newline at end of file