@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);
}
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
php666
@php666
PHP-макака
Однозначно 2 вариант. Зашивая дополнительную логику в метод удаления товара ты рискуешь в последствии столкнуться с плохой архитектурой. Объект, умеющий удалять товар, не должен ничего знать о связях, его задача - оперировать одной сущностью, не задумываясь, кому принадлежит этот товар. Ибо, например, разрабатывая админ часть, администратор имеет право удалить ЛЮБОЙ товар с помощью всё того же метода

$obj->delete($product_id);

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

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

Войти через центр авторизации
Похожие вопросы