This repository has been archived on 2023-01-06. You can view files and clone it, but cannot push or open issues or pull requests.
web/app/lib/App/Core/App.php

84 lines
1.8 KiB
PHP
Raw Permalink Normal View History

2022-01-15 10:26:02 +00:00
<?php
2022-03-02 06:15:12 +00:00
namespace App\Core;
use \Exception;
/**
* Some framework thingy
*/
2022-01-19 18:50:54 +00:00
class App
2022-01-15 10:26:02 +00:00
{
2022-03-02 06:15:12 +00:00
public string $dir;
2022-01-23 21:56:36 +00:00
public array $config;
public Database $database;
public Session $session;
public User $user;
2022-01-20 21:23:21 +00:00
2022-01-23 21:56:36 +00:00
public function __construct(
2022-03-02 06:15:12 +00:00
string $dir,
2022-01-23 21:56:36 +00:00
array $config,
Database $database,
Session $session,
User $user
)
2022-01-19 18:50:54 +00:00
{
2022-03-02 06:15:12 +00:00
$this->dir = $dir;
2022-01-23 21:56:36 +00:00
$this->config = $config;
2022-01-21 20:32:21 +00:00
$this->database = $database;
2022-01-23 21:56:36 +00:00
$this->session = $session;
$this->user = $user;
2022-01-19 18:50:54 +00:00
}
2022-03-07 06:13:17 +00:00
/**
* Grab model
*/
2022-05-25 13:57:05 +00:00
public function model(string $model_name): object
2022-01-15 10:26:02 +00:00
{
2022-03-07 06:13:17 +00:00
// require model file
2022-05-25 13:57:05 +00:00
$path = $this->dir . '/model/' . $model_name . '.php';
2022-02-08 23:02:11 +00:00
if (!file_exists($path))
{
throw new Exception("Model does not exist");
}
require $path;
2022-05-25 13:57:05 +00:00
return new $model_name($this->database);
2022-01-15 10:26:02 +00:00
}
2022-03-03 04:11:14 +00:00
/**
* Render given view
*/
2022-05-25 13:57:05 +00:00
public function view(string $_view, array $_data = []): void
2022-01-15 10:26:02 +00:00
{
2022-05-25 13:57:05 +00:00
$_path = $this->dir . '/view/' . $_view . '.php';
if (!file_exists($_path))
2022-02-08 23:02:11 +00:00
{
throw new Exception("View does not exist");
}
2022-05-11 15:36:20 +00:00
// import variables into the current symbol table from an array
2022-05-25 13:57:05 +00:00
extract($_data);
require $_path;
2022-01-15 10:26:02 +00:00
}
2022-01-19 19:16:09 +00:00
2022-03-03 04:11:14 +00:00
/**
2022-04-14 20:59:42 +00:00
* Convert data into JSON response
2022-03-03 04:11:14 +00:00
*/
2022-04-13 19:22:21 +00:00
public function api(mixed $data, int $status_code = 200): void
2022-01-19 19:16:09 +00:00
{
2022-03-07 06:13:17 +00:00
// set headers
2022-01-19 19:16:09 +00:00
http_response_code($status_code);
header('Content-type: application/json');
2022-03-07 06:13:17 +00:00
// convert and respond with data
2022-01-19 19:16:09 +00:00
echo json_encode($data);
2022-02-08 21:31:43 +00:00
die();
2022-01-19 19:16:09 +00:00
}
2022-01-23 21:56:36 +00:00
2022-03-03 04:11:14 +00:00
/**
2022-04-14 20:59:42 +00:00
* Redirect to given URL
2022-03-03 04:11:14 +00:00
*/
2022-01-23 21:56:36 +00:00
public function redirect(string $url): void
{
header("Location: $url");
die();
}
2022-01-15 10:26:02 +00:00
}