Правильно ли я понимаю MVC? Знакомый попросил написать небольшую систему для управления лицензиями(сам он пишет на си). Я решил писать с использованием MVC. Вопрос такой - правильно ли я понял этот паттерн, вот пример авторизации на сайте:Controller_Login.phpmodel = new Model_Login();
$this->view = new View();
}
else header('Location: ../main');
}

function action_index()
{
if(!empty($_POST['login'])&& !empty($_POST['password'])){
$data = $this->model->login($_POST['login'],$_POST['password']);
}
$this->view->generate('login.php',array('data' => $data,'title'=> "Авторизация"));
}

function action_logout()
{
$this->model->logout();
}

}Model_Login.phpreal_escape_string(htmlspecialchars($login));
$password = $link->real_escape_string(htmlspecialchars(md5(md5($password))));
$query = "SELECT user_id, email, user_group,name FROM dle_users WHERE name= '$login' AND password = '$password' LIMIT 1";
$sql = $link->query($query);
if (mysqli_num_rows($sql) == 1) {
$row = $sql->fetch_assoc();
if ($row['user_group'] == 7 || $row['user_group'] == 1) {
Session::set('id',$row['user_id']);
Session::set('email',$row['name']);
Session::set('group',$row['user_group']);
Session::set('login',$row['email']);
header("Location: ../main");
} else{
$data['msg']= "Ваша группа не соответствует требованиям!";
}
}
else {
$data['msg']= "Неверное имя пользователя или пароль. Проверьте правильность введенных данных!";
}
$link->close();
return $data;
}
}
Надо ли было создавать глобальные переменные в модели, и делать сеттеры и геттеры?

21 Авг 2019 в 07:05
204 +1
0
Ответы
1

Да, вы правильно понимаете MVC (Model-View-Controller) паттерн. В вашем примере контроллер обрабатывает запросы пользователя, модель отвечает за бизнес-логику и взаимодействие с базой данных, а представление отвечает за отображение данных пользователю.

Относительно создания глобальных переменных в модели и использования сеттеров и геттеров - это зависит от вашего подхода к программированию. В вашем случае, в модели Model_Login вы используете массив данных $data для передачи информации между методами и передачи данных обратно в контроллер. В данном контексте, можно сказать, что использование глобальных переменных и сеттеров/геттеров не обязательно.

Однако, хорошей практикой при разработке объектно-ориентированных приложений является инкапсуляция данных, что позволяет обеспечить их безопасность и избежать прямого доступа извне. Таким образом, если вы хотите более строго контролировать доступ к данным в вашей модели, вы можете использовать сеттеры и геттеры.

В целом, ваше решение правильно с точки зрения MVC паттерна, но необходимость использования глобальных переменных и сеттеров/геттеров зависит от специфики вашего приложения и вашего подхода к программированию.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир