@phpcoder81

Какие параметры передавать в метод удаления товара?

Есть сайт, где несколько продавцов. У каждого свои товары.
Где делать проверку на прав? Внутри метода или в контроллере?

Вариант 1
class Product{
  public function delete(int $product_id, int $shop_id){
    //...например, грубо .... WHERE `id` = ? AND `shop_id` = ?
  }
}

$obj->delete($product_id, $shop_id);


Вариант 2 (а проверку делать до вызова)
class Product{
  public function delete(int $product_id){
    //...
  }
}

$now = $obj->getById($product_id);
if($now->shop_id == $shop_id){
  $obj->delete($product_id);
}
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
php666
@php666
PHP-макака
Однозначно 2 вариант. Зашивая дополнительную логику в метод удаления товара ты рискуешь в последствии столкнуться с плохой архитектурой. Объект, умеющий удалять товар, не должен ничего знать о связях, его задача - оперировать одной сущностью, не задумываясь, кому принадлежит этот товар. Ибо, например, разрабатывая админ часть, администратор имеет право удалить ЛЮБОЙ товар с помощью всё того же метода

$obj->delete($product_id);

Сл-но, проверки на $shop_id там никакой не должно быть. Проверка должна быть в слое выше. В контроллере или еще где-то. Но не в методе удаления.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
модель(или скорее группа связанных моделей) дляхранения прав + класс проверки прав
допустим для RBAC: RoleModel, UserModel, UserRoleModel и RbacManager
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 55 000 до 80 000 руб.
WACDAQ Москва
от 120 000 руб.
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
21 авг. 2019, в 18:32
5000 руб./за проект
21 авг. 2019, в 18:21
1000 руб./за проект