История изменений
Исправление Razip, (текущая версия) :
В общем идея разделения модели и ресурсов хорошо прижилась.
Класс-ресурс теперь может загружать в модель данные, дабы не делать этого в контроллере. Для этого достаточно передать модель через сеттер (по ссылке) в объект ресурса.
Теперь SessionStorage включен в ресурс UserResource (тот, который принадлежит модели UserModel), т.к. это такой же равноправный интерфейс для работы с данными как и PDO.
$user = (new UserModel())->setName($_POST['name'])->setPassword($_POST['password']);
$userResource = (new UserResource())->useModel($user);
if (!$userResource->findByNameAndPassword()) {
throw new Exception('имя и/или пароль указаны не верно');
}
if (!$user->isConfirmed()) {
throw new Exception('пользователь не был подтвержден');
}
$user->setLoginFlag(true);
$userResource->saveinSession();
// где-то в точке входа программы
UserResource::setPDO($PDO);
UserResource::setSessionStorage(new FileSession());
/**
* @param UserModel $currentUser
* @param UserResource $userResource
* @param CategoryResource $categoryResource
*/
function __construct(UserModel &$currentUser, UserResource &$userResource, CategoryResource &$categoryResource) {
$this->currentUser = $currentUser;
$this->userResource = $userResource;
$this->categoryResource = $categoryResource;
}
Исправление Razip, :
В общем идея разделения модели и ресурсов хорошо прижилась.
Класс-ресурс теперь может загружать в модель данные, дабы не делать этого в контроллере. Для этого достаточно передать модель через сеттер (по ссылке) в объект ресурса.
Теперь SessionStorage включен в ресурс UserResource (тот, который принадлежит модели UserModel), т.к. это такой же равноправный интерфейс для работы с данными как и PDO.
$user = (new UserModel())->setName($_POST['name'])->setPassword($_POST['password']);
$userResource = (new UserResource())->useModel($user);
if (!$userResource->findByNameAndPassword()) {
throw new Exception('имя и/или пароль указаны не верно');
}
if (!$user->isConfirmed()) {
throw new Exception('пользователь не был подтвержден');
}
$user->setLoginFlag(true);
$userResource->saveinSession();
// где-то в точке входа программы
UserResource::setPDO($PDO);
UserResource::setSessionStorage(new FileSession());
/**
* @param UserModel $currentUser
* @param UserResource $userResource
* @param CategoryResource $categoryResource
*/
function __construct(UserModel &$currentUser, UserResource &$userResource, CategoryResource &$categoryResource) {
$this->currentUser = $currentUser;
$this->userResource = $userResource;
$this->categoryResource = $categoryResource;
}
Исходная версия Razip, :
В общем идея разделения модели и ресурсов хорошо прижилась.
Класс-ресурс теперь может загружать в модель данные, дабы не делать этого в контроллере. Для этого достаточно передать модель через сеттер (по ссылке) в объект ресурса.
Теперь SessionStorage включен в ресурс UserResource (тот, который принадлежит модели UserModel), т.к. это такой же равноправный интерфейс для работы с данными как и PDO.
$user = (new UserModel())->setName($_POST['name'])->setPassword($_POST['password']);
$userResource = (new UserResource())->useModel($user);
if (!$userResource->findByNameAndPassword()) {
throw new Exception('имя и/или пароль указаны не верно');
}
if (!$user->isConfirmed()) {
throw new Exception('пользователь не был подтвержден');
}
$user->setLoginFlag(true);
$userResource->saveinSession();
// где-то в точке входа программы
UserResource::setPDO($PDO);
UserResource::setSessionStorage(new FileSession());
/**
* @param UserModel $currentUser
* @param UserResource $userResource
* @param CategoryResource $categoryResource
*/
function __construct(UserModel &$currentUser, UserResource &$userResource, CategoryResource &$categoryResource) {
$this->currentUser = $currentUser;
$this->userResource = $userResource;
$this->categoryResource = $categoryResource;
}