Add my template project
This commit is contained in:
parent
0e0ac4f094
commit
832bf929dc
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
$config['root'] = [
|
||||||
|
'title' => 'Тестовый сайт',
|
||||||
|
'description' => 'Описание сайта для embed ссылок',
|
||||||
|
'keywords' => [
|
||||||
|
'ключевые',
|
||||||
|
'слова',
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
$config['db'] = [
|
||||||
|
'main' => [
|
||||||
|
'driver' => 'mysql',
|
||||||
|
'user' => 'root',
|
||||||
|
'password' => '',
|
||||||
|
'name' => 'user-rest-api',
|
||||||
|
'host' => '127.0.0.1',
|
||||||
|
'port' => 3306,
|
||||||
|
'charset' => 'utf8',
|
||||||
|
'options' => [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
||||||
|
]
|
||||||
|
];
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
class Root {
|
||||||
|
private static $installed = false;
|
||||||
|
|
||||||
|
public static function init() {
|
||||||
|
self::$installed = floatval(file_get_contents(__RD__.'installed'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function url($url, $force = true) {
|
||||||
|
header('Location: '.$url);
|
||||||
|
if($force) exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function installed() {
|
||||||
|
return self::$installed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Root::init();
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
class DB {
|
||||||
|
private static $pdos = [];
|
||||||
|
|
||||||
|
public static function init($conf = []) {
|
||||||
|
try {
|
||||||
|
foreach($conf as $title => $data) {
|
||||||
|
$dsn = sprintf('%s:dbname=%s;host=%s;port=%d;charset=%s',
|
||||||
|
$data['driver'],
|
||||||
|
$data['name'],
|
||||||
|
$data['host'],
|
||||||
|
$data['port'],
|
||||||
|
$data['charset']
|
||||||
|
);
|
||||||
|
self::$pdos[$title] = new PDO($dsn, $data['user'], $data['password'], $data['options']);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch(\Throwable $th) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getQuery($db, $sql, $args = null) {
|
||||||
|
if(!is_array($args) && !empty($args))
|
||||||
|
$args = [$args];
|
||||||
|
|
||||||
|
$stmt = self::$pdos[$db]->prepare($sql);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$stmt->execute($args);
|
||||||
|
}
|
||||||
|
catch(\Throwable $th) {
|
||||||
|
Debug::print($sql);
|
||||||
|
Debug::print($args);
|
||||||
|
Debug::print($th);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stristr($sql, 'SELECT'))
|
||||||
|
return $stmt->fetch(PDO::FETCH_OBJ);
|
||||||
|
|
||||||
|
if(stristr($sql, 'INSERT'))
|
||||||
|
return self::$pdos[$db]->lastInsertId();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getQueryAll($db, $sql, $args = null) {
|
||||||
|
if(!is_array($args) && !empty($args))
|
||||||
|
$args = [$args];
|
||||||
|
|
||||||
|
$stmt = self::$pdos[$db]->prepare($sql);
|
||||||
|
$stmt->execute($args);
|
||||||
|
return $stmt->fetchAll(PDO::FETCH_OBJ);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!DB::init($config['db'])) {
|
||||||
|
die('DB not connected! Recheck configs!');
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
// REQUIREMENTS:
|
||||||
|
// 0001.db.php
|
||||||
|
|
||||||
|
class Debug {
|
||||||
|
public static function init() {
|
||||||
|
if(!Root::installed())
|
||||||
|
self::createTables();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function createTables() {
|
||||||
|
DB::getQuery('main',
|
||||||
|
'CREATE TABLE IF NOT EXISTS `debug_log` (
|
||||||
|
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`value` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
)
|
||||||
|
ENGINE = InnoDB
|
||||||
|
CHARSET=utf8
|
||||||
|
COLLATE utf8_general_ci'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function print($a, $b = false) {
|
||||||
|
echo '<pre>';
|
||||||
|
$b ? var_dump($a) : print_r($a);
|
||||||
|
echo '</pre>';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function log($string) {
|
||||||
|
$string = date('H:i:s d.m.Y', time()).' | '.$string;
|
||||||
|
DB::getQuery('main', 'INSERT INTO `debug_log` (`value`) VALUES (?)', $string);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Debug::init();
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
if(file_exists(__CD__.'api/'.__URL__[1].'/'.__URL__[2].'.php'))
|
||||||
|
require __CD__.'api/'.__URL__[1].'/'.__URL__[2].'.php';
|
||||||
|
else
|
||||||
|
$data = [
|
||||||
|
'error' => true,
|
||||||
|
'message' => 'Endpoint not exists.',
|
||||||
|
];
|
||||||
|
|
||||||
|
echo json_encode($data);
|
||||||
|
exit();
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?php
|
||||||
|
$data = [
|
||||||
|
'error' => false,
|
||||||
|
'message' => 'test',
|
||||||
|
];
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?php
|
||||||
|
require __CD__.'route.php';
|
||||||
|
require __TD__.'index.php';
|
|
@ -0,0 +1 @@
|
||||||
|
<?php
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?php
|
||||||
|
if(__URI__ == '/' || in_array(__URL__[0], ['index', 'route']))
|
||||||
|
Root::url('/main');
|
||||||
|
elseif(file_exists(__CD__.__URL__[0].'.php'))
|
||||||
|
require __CD__.__URL__[0].'.php';
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
session_start([
|
||||||
|
'cookie_lifetime' => 3*60*60,
|
||||||
|
]);
|
||||||
|
|
||||||
|
try {
|
||||||
|
define('__URI__', strstr($_SERVER['REQUEST_URI'], '?', true) ? strstr($_SERVER['REQUEST_URI'], '?', true) : $_SERVER['REQUEST_URI']);
|
||||||
|
define('__URL__', explode('/', substr(__URI__, 1)));
|
||||||
|
|
||||||
|
define('__RD__', dirname(__FILE__).'/');
|
||||||
|
define('__TD__', __RD__.'template/');
|
||||||
|
define('__ED__', __RD__.'engine/');
|
||||||
|
define('__CF__', __RD__.'config/');
|
||||||
|
define('__CD__', __ED__.'core/');
|
||||||
|
define('__CL__', __ED__.'class/');
|
||||||
|
|
||||||
|
define('__RS__', '/');
|
||||||
|
define('__TS__', __RS__.'template/');
|
||||||
|
define('__CS__', __TS__.'css/');
|
||||||
|
define('__JS__', __TS__.'js/');
|
||||||
|
define('__IS__', __TS__.'img/');
|
||||||
|
define('__US__', __RS__.'uploads/');
|
||||||
|
|
||||||
|
$config = [];
|
||||||
|
foreach(scandir(__CF__) as $a)
|
||||||
|
if($a != '.' && $a != '..')
|
||||||
|
require __CF__.$a;
|
||||||
|
|
||||||
|
foreach(scandir(__CL__) as $a)
|
||||||
|
if($a != '.' && $a != '..')
|
||||||
|
require __CL__.$a;
|
||||||
|
|
||||||
|
require __CD__.'index.php';
|
||||||
|
}
|
||||||
|
catch(\Throwable $th) {
|
||||||
|
echo '<pre>';
|
||||||
|
print_r($th);
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<hr>
|
||||||
|
<p>© Тестовый сайт 2024</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="<?=$config['root']['description']?>">
|
||||||
|
<meta name="keywords" content="<?=implode(', ', $config['root']['keywords'])?>">
|
||||||
|
<link rel="stylesheet" href="<?=__CS__?>style.css?v=1">
|
||||||
|
<script src="<?=__JS__?>index.js?v=1"></script>
|
||||||
|
<title><?=$config['root']['title']?></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Тестовый REST API сайт</h1>
|
||||||
|
<hr>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?php
|
||||||
|
include __TD__.'header.php';
|
||||||
|
include __TD__.'route.php';
|
||||||
|
include __TD__.'footer.php';
|
|
@ -0,0 +1 @@
|
||||||
|
<p>Прочтите <b>README.md</b> файл для получения информации по API.</p>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?php
|
||||||
|
if(__URI__ == '/' || in_array(__URL__[0], ['index', 'route', 'header', 'footer']))
|
||||||
|
header('Location: /main');
|
||||||
|
elseif(file_exists(__TD__.__URL__[0].'.php'))
|
||||||
|
require __TD__.__URL__[0].'.php';
|
||||||
|
else
|
||||||
|
header('Location: /');
|
Loading…
Reference in New Issue