我有一个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']);