Php, если функция была вызвана вне класса

Я делаю SDK для веб-платформы, есть клиентский класс, для авторизации которого требуется файл cookie, и есть функция, которая получает токен аутентификации из файла cookie. Итак, мой вопрос: как проверить, была ли функция вызвана вне класса. Мне это нужно, потому что я хочу защитить эту функцию паролем и сделать так, чтобы при вызове класса она работала без пароля. Вот мой код:

public function gettoken(?string password = ""): string{
    //check if it's called inside of class
    if (fromClass() == true){
       //code that gets token
    }
    //if it's called outside of class
    if ($password == $this->password){
       //code that gets token
    }
    return "Incorrect password";
}

У вас работает debug_backtrace()? Для пример.

vee 09.04.2022 20:00
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
1
1
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это очень похоже на плохую идею.

Почему бы не сделать две функции: одну общедоступную, для которой требуется пароль, и одну приватную, для которой этого не требуется. Общедоступная функция может, конечно, вызвать приватную функцию после проверки пароля.

Что-то вроде этого:

public function getTokenUsingPassword($password)
{
    if ($password == $this->password) {
        return $this->getToken();
    }
    return false;
}

private function getToken()
{
    return //code that gets token
}

Другие вопросы по теме