函数存在时未定义的函数


undefined function when function is present

我有一个PHP类,它看起来像这样:

class userAuthentication
{
    public static function Authenticate()
    {
        if (isset($_COOKIE['email']))
        {
            verify($someVar, getPass($_COOKIE['email']);
        }
    }
    public static function getPass($email)
    {
    }
    public static function verify()
    {
    }
}

有时(我无法准确指出时间),我会遇到一个致命的错误:

Call to undefined function getPass()

错误出现在我调用上面代码示例中函数的那一行。为什么在函数明确存在的情况下会发生这种情况。

它是类中的一个静态函数。如果要利用延迟静态绑定,请使用self::getPass()static::getPass()verify()也是如此。

verify不是全局函数,但仅在类的范围内有效。你想要

self::verify($someVar, getPass($_COOKIE['email']);

我认为当您尝试运行getPass($_COOKIE...时会发生错误,因为您调用它是错误的。由于函数是一个类方法,您必须像这样运行它:

$this->getPass(...);

或者如果你静态地调用它:

self::getPass(...);

制作您的代码:

class userAuthentication
{
    public static function Authenticate()
    {
        if (isset($_COOKIE['email']))
        {
            self::verify($someVar, self::getPass($_COOKIE['email']);
            // Or...
            $this->verify($someVar, $this->getPass($_COOKIE['email']);
        }
    }
    public static function getPass($email)
    {
    }
    public static function verify()
    {
    }
}

您并没有将其作为静态函数进行调用。

从类内使用任一:

self::getPass($email);

或(用于后期静态绑定):

static::getPass($email);

和来自类外:

userAuthentication::getPass($email);

线路应该是:

self::verify($someVar, self::getPass($_COOKIE['email']);