Начал изучать php и по немного пытаюсь разобраться с MVC (до ООП еще не добрался). Поставил себе цель: сделать простой проект с авторизацией, регистрацией и выводом статей.
Более менее разделив логику получилось так, как ниже. Собственно вопрос, логично ли составлен проект? Или я где я что не так делаю? (проект работает)
index.php
$routes = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$controller = 'authorization';
$action = 'index';
if(!empty($routes[0])){
$controller = $routes[0];
}
if(!empty($routes[1])){
$action = $routes[1];
}
$controller_path = $_SERVER['DOCUMENT_ROOT']."/core/controllers/".$controller.'.php';
if(file_exists($controller_path)){
include ($controller_path);
}else{
Error();
}
if(function_exists($action)){
$action();
}else{
Error();
}
echo ('<pre>');
print_r(array($controller,$action));
echo ('<pre>');
function Error(){
header('HTTP/1.x 404 Not Found');
header("Status: 404 Not Found");
exit('Страница на которую вы пытаетесь попасть, не существует или была удалена!');
}
.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Контроллеры выглядят так: core/controllers/authorization.php
function index(){
include_once ($_SERVER['DOCUMENT_ROOT'].'/core/views/authorization.php');
}
function check(){
include_once ($_SERVER['DOCUMENT_ROOT'].'/core/models/check.php');
}
вид таким образом:
core/views/authorization.php
<form action = "check" method = "post">
<table>
<tr>
<td><input type = "text" name = "login"></td>
</tr>
<tr>
<td><input type = "password" name = "password"></td>
</tr>
<tr>
<td><button type="submit" name = "auth-in">Войти</button></td>
</tr>
<tr>
<td><a href="/registration/">Регистрация</a></td>
</tr>
</table>
</form>
Модель таким образом:
core/models/check.php
include($_SERVER['DOCUMENT_ROOT'].'/core/database/connect.php');
if(isset($_POST['auth-in'])){
if(preg_match("/^[a-z0-9\-]{10,}+$/",$_POST['login'])&&preg_match("/^[a-z0-9]{10,}+$/",$_POST['password'])){
$stmt = $pdo->prepare("SELECT * FROM users");
$stmt->bindParam(':login', $login);
$stmt->execute();
$result = $stmt->fetchAll();
print_r($result);
}else{
echo('Необходимо проверить данные');
}
}else{
echo ('А ты как тут оказался?');
}
if(isset($_POST['reg-in'])){
echo('модель регистрации');
}
Начал изучать php и по немного пытаюсь разобраться с MVC (до ООП еще не добрался). . . . Или я где я что не так делаю? (проект работает)
Проект-то может и работает. Но, без ООП Вы MVC не построите.
Модели у Вас как таковой нет. Потому, что это структурированный объект, который описывает сущность бизнес логики. То, что у Вас в модели скорее подходит для контроллера.
Контроллеры по принципу 1 контроллер = функция = 1 действие. Для начала может и не плохо. Но, как минимум гибкости у такой архитектуры точно не будет. Для сравнения 1 класс контроллера того же Yii может обрабатывать несколько действий.
К представлению, правда, особых вопросов нет. Но с другой стороны, представление это по большей части вёрстка и JS. А, это совсем другая песня.
В общем как можно скорее добирайтесь до ООП, изучайте как устроены другие MVC фреймворки, используйте полученные знания в собственных проектах и Вы сами увидите, насколько упростится Ваша работа по сравнению с тем, что есть сейчас.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет! Огромная проблема, не получается сделать дропдаун меню для языкового плагина Polyglot WordPressВызывается список в коде вот так: <ul><?php...
strtotime('2018-09-20 16:49:54') кидаю первый аргументЭта функция чутко реагирует на настройки сервера временной зоны