ООП не знаю, но роутинг нужен для удобства. Фреймворки смотрел как сделаны, но там совершенно другая архитектура, поэтому по возможности дать рекомендации, критику именно по этому коду.
### Если роутера нет - это главная страница
if(!isset($_GET['route'])){
include_once "main.php";
}
### Если роутер есть - это не главная страница
else{
// Получаем URL
$route = preg_replace('/\/$/ism', '', $_GET['route']);
// Ищем по нему в базе
$st = $pdo->prepare('SELECT `title`, `head`, `desc`, `keyw`, `text` FROM `artm` WHERE url=:url');
$st->bindParam(':url', $route, PDO::PARAM_STR);
$st->execute();
$res = $st->fetchAll();
### Если результат из БД НЕ пустой - это страница
if(!empty($res)){
// Подключаем шаблон и отдаём юзеру
include_once $_SERVER['DOCUMENT_ROOT']."/template/header.php";
echo $res[0]['text'];
include_once $_SERVER['DOCUMENT_ROOT']."/template/footer.php";
}
### Если результат из БД пустой - это лендинг в файле или 404
elseif(empty($res)){
// Ищем в массиве лендингов имя лендинга совпадающее с роутером
$pageurl = false;
$pageurl = array_search($route, $landing);
// Если найдено - открываем лендинг
if($pageurl != false){
include_once $_SERVER['DOCUMENT_ROOT']."/$route";
}
// Восстановление забытого пароля
elseif(preg_match('/password[a-z0-9]{32}/ism', $_GET['route'], $TokenPassword)){
include_once 'php/fogetpass.php';
}
// Если ничего не найдено отдаём 404
else{
echo "Страница 404<br>";
}
}
}
UP
Не особо понимаю в чём принципиальное достоинство кода:
$app->get('/hello/{name}', function (Request $request, Response $response) {
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
перед моим?
Вынести как можно больше из index-файла? Ну это и я могу логику просто ещё на один уровень вынести и там разобрать...