В PHP немного странно думать об истинной модели MVC, потому что ваша модель, представление и контроллер могут получить доступ к $ _SESSION.
Если, например, вы собираетесь регистрироватьПользователь, ваша модель будет делать следующее:
class Model{
...
static function login($username, $password){
$result = Model::getUser($username, $password);
if(empty($result)){
return false;
}
else
{
$_SESSION['userid'] = $result['id'];
// Assign other information you think you'll need in the session here
}
}
static function loggedIn(){
if(isset($_SESSION['userid']){
return true;
}
else
{
return false;
}
}
static function getAttribute($attr){
return $_SESSION[$attr];
}
...
}
class Controller{
function someFxn(){
$userInfo = Model::getAttribute('someAttr');
}
}
Очевидно, что этот код должен быть израсходован, но он должен отображать концепции правильно.Я также использовал статические функции в модели, но вы можете сделать модель объектом.
Мои вопросы: где мне сохранить эти настройки в модели или передать их обратно контроллеру, и контроллер сохранит эти настройки?
В зависимости от того, как вы хотите это сделать, вы либо выбираете настройки каждый раз из базы данных через модель, либо можете сохранять их в сеансе.Хранение вещей в $ _SESSION позволит вам сократить количество обращений к базе данных.На практике модель манипулирует $ _SESSION или базой данных.Если ваша модель является чем-то конкретным (вы можете создать свою собственную модель пользователя), то вы создаете экземпляр этого объекта и сохраняете свою информацию в частных членах.
Задача контроллера - взять информацию из модели, а затем соответствующим образом отобразить вашу страницу.Действительно, поток данных MVC работает следующим образом:
- Запрос сделан к контроллеру
- Контроллер получает информационную форму модели
(это необязательно, возможно, контроллеру ничего не нужно отмодель) - Модель возвращает информацию в контроллер
(происходит, если вы сделали запрос на предыдущем шаге) - Контроллер передает соответствующую информацию для просмотра.