代码之家  ›  专栏  ›  技术社区  ›  Glebux

Php if函数是在类外调用的

  •  1
  • Glebux  · 技术社区  · 2 年前

    我正在为一个web平台制作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";
    }
    
    1 回复  |  直到 2 年前
        1
  •  0
  •   KIKO Software    2 年前

    这听起来很像个坏主意。

    为什么不创建两个函数:一个需要密码的public函数和一个不需要密码的private函数。当然,public函数可以在验证密码后调用private函数。

    比如:

    public function getTokenUsingPassword($password)
    {
        if ($password == $this->password) {
            return $this->getToken();
        }
        return false;
    }
    
    private function getToken()
    {
        return //code that gets token
    }