За последние 24 часа нас посетили 18237 программистов и 1625 роботов. Сейчас ищут 1096 программистов ...

Доступ к имени вызвавшего метода

Тема в разделе "PHP для новичков", создана пользователем Дюран, 2 май 2019.

  1. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    284
    Симпатии:
    21
    Приветствую.
    Есть общий метод проверок, кидающий исключения. Но вместо малоинформативного сообщения 1) хотел бы чтобы выдавало сообщение как 2) с учетом имени вызвавшего метода ("you are not allowed to do actionEdit").
    Чтобы пользователь видел конкретно что он делает не так.
    debug_backtrace единственная для этого возможность? Для продакшена тоже подходит?

    p.s. Имена параметрами в checkGood() передавать не хочется

    Код (Text):
    1. class A1{
    2.     public function actionView()
    3.     {
    4.         $this->checkGood();
    5.     }
    6.     public function actionEdit()
    7.     {
    8.         $this->checkGood();
    9.     }      
    10.        
    11.     protected function checkGood()
    12.     {
    13.         //print_r(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2));
    14.         // 1)
    15.         //throw new \Exception('you are not allowed to do this action');
    16.         // 2)
    17.         //throw new \Exception('you are not allowed to do ' . $action);
    18.     }
    19. }
    20.  
    21. $a = new A1();
    22. $a->actionEdit();
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.576
    Симпатии:
    1.759
    Авторизация не так делается. Вводятся права, какой пользователь (роль пользователя) что может выполнять, и проверяется, может ли текущий пользователь сделать то или иное действие
     
    [vs] нравится это.
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.557
    Симпатии:
    631
    У исключения есть метод getTrace() с этой информацией.