1st commit
This commit is contained in:
commit
b146e3b554
4
.env
Normal file
4
.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DB_HOST=localhost
|
||||||
|
DB_USER=root
|
||||||
|
DB_PASSWORD=
|
||||||
|
DB_NAME=php-task1
|
0
.env.example
Normal file
0
.env.example
Normal file
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.env
|
||||||
|
.idea
|
14
app/Controllers/Controller.php
Normal file
14
app/Controllers/Controller.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ps\app\Controllers;
|
||||||
|
|
||||||
|
use ps\STE\STEView;
|
||||||
|
class Controller
|
||||||
|
{
|
||||||
|
protected function getViewAction($filename)
|
||||||
|
{
|
||||||
|
$view = new STEView();
|
||||||
|
$view->viewPath = 'views/';
|
||||||
|
$view->render(''.$filename.'.php');
|
||||||
|
}
|
||||||
|
}
|
14
app/Controllers/LoginController.php
Normal file
14
app/Controllers/LoginController.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ps\app\Controllers;
|
||||||
|
|
||||||
|
class LoginController extends Controller
|
||||||
|
{
|
||||||
|
public $filename = 'login';
|
||||||
|
public function actionGetLoginForm()
|
||||||
|
{
|
||||||
|
|
||||||
|
parent::getViewAction($this->filename);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
11
app/Controllers/PostsController.php
Normal file
11
app/Controllers/PostsController.php
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ps\app\Controllers;
|
||||||
|
|
||||||
|
class PostsController
|
||||||
|
{
|
||||||
|
public function getPosts()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
19
bootstrap/db.php
Normal file
19
bootstrap/db.php
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
require "vendor/autoload.php";
|
||||||
|
|
||||||
|
use Dotenv\Dotenv;
|
||||||
|
use Illuminate\Database\Capsule\Manager as Capsule;
|
||||||
|
|
||||||
|
$dotenv = Dotenv::createImmutable(ROOT_PATH);
|
||||||
|
$dotenv->load();
|
||||||
|
|
||||||
|
$capsule = new Capsule;
|
||||||
|
$capsule->addConnection([
|
||||||
|
"driver" => "mysql",
|
||||||
|
"host" => $_ENV['DB_HOST'],
|
||||||
|
"database" => $_ENV['DB_NAME'],
|
||||||
|
"username" => $_ENV['DB_USER'],
|
||||||
|
"password" => $_ENV['DB_PASSWORD']
|
||||||
|
]);
|
||||||
|
$capsule->setAsGlobal();
|
||||||
|
$capsule->bootEloquent();
|
66
index.php
Normal file
66
index.php
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
ini_set("display_errors", 1);
|
||||||
|
error_reporting(-1);
|
||||||
|
|
||||||
|
const ROOT_PATH = __DIR__;
|
||||||
|
|
||||||
|
const BASE_URL = "http://php-task1";
|
||||||
|
|
||||||
|
include __DIR__ . '/vendor/autoload.php';
|
||||||
|
include __DIR__ . '/bootstrap/db.php';
|
||||||
|
|
||||||
|
use Phroute\Phroute\RouteCollector;
|
||||||
|
use Phroute\Phroute\Dispatcher;
|
||||||
|
use Illuminate\Database\Eloquent;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use ps\app\Models\Posts;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function processInput($uri){
|
||||||
|
$uri = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
|
||||||
|
|
||||||
|
return $uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
function processOutput($response){
|
||||||
|
echo json_encode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
// function getPDOInstance(){
|
||||||
|
// return new PDO('mysql:host=localhost;dbname=booksapi;charset=utf8', 'root', '');
|
||||||
|
// }
|
||||||
|
|
||||||
|
$router = new RouteCollector();
|
||||||
|
|
||||||
|
$router->get('/', function(){
|
||||||
|
return 'Like at Home!';
|
||||||
|
});
|
||||||
|
|
||||||
|
$router->get('posts', function(){
|
||||||
|
echo Posts::all();
|
||||||
|
});
|
||||||
|
|
||||||
|
$router->get('login', [\ps\app\Controllers\LoginController::class, 'actionGetLoginForm']);
|
||||||
|
|
||||||
|
$dispatcher = new Dispatcher($router->getData());
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], processInput($_SERVER['REQUEST_URI']));
|
||||||
|
|
||||||
|
} catch (Phroute\Exception\HttpRouteNotFoundException $e) {
|
||||||
|
|
||||||
|
var_dump($e);
|
||||||
|
die();
|
||||||
|
|
||||||
|
} catch (Phroute\Exception\HttpMethodNotAllowedException $e) {
|
||||||
|
|
||||||
|
var_dump($e);
|
||||||
|
die();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
processOutput($response);
|
||||||
|
|
3
routes.php
Normal file
3
routes.php
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
use app\models\Posts;
|
||||||
|
|
56
simple-template-engine/STEView.php
Normal file
56
simple-template-engine/STEView.php
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ps\STE;
|
||||||
|
|
||||||
|
class STEView
|
||||||
|
{
|
||||||
|
public string $viewPath = '';
|
||||||
|
public bool|string $layout = false;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render(string $view, array $data = []): void
|
||||||
|
{
|
||||||
|
$content = $this->createContent($view, $data);
|
||||||
|
|
||||||
|
echo $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fetch(string $view, array $data = []): false|string
|
||||||
|
{
|
||||||
|
$content = $this->createContent($view, $data);
|
||||||
|
|
||||||
|
return $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createContent(string $view, array $data = []): false|string
|
||||||
|
{
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
foreach ($data as $key => $datum){
|
||||||
|
${"$key"} = $datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
include ($this->viewPath . $view);
|
||||||
|
|
||||||
|
$content = ob_get_contents();
|
||||||
|
ob_end_clean ();
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
$file_content = $content;
|
||||||
|
|
||||||
|
if ($this->layout){
|
||||||
|
if (file_exists($this->viewPath . $this->layout)){
|
||||||
|
include ($this->viewPath . $this->layout);
|
||||||
|
$file_content = ob_get_contents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ob_end_clean ();
|
||||||
|
|
||||||
|
return $file_content;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
2
views/login.php
Normal file
2
views/login.php
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
echo 'LoginPage';
|
Loading…
Reference in New Issue
Block a user