我有一个看起来像这样的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()
在我调用上面代码示例中的函数的行处抛出错误。当函数明确存在时,为什么会发生这种情况。
答案 0 :(得分:5)
它是类中的静态函数。如果要利用Late Static Binding,请使用self::getPass()
或static::getPass()
。同样适用于verify()
。
答案 1 :(得分:3)
verify
不是全局函数,但仅在类的范围内有效。你想要
self::verify($someVar, getPass($_COOKIE['email']);
答案 2 :(得分:1)
我认为当您尝试运行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()
{
}
}
答案 3 :(得分:1)
你不是把它称为静态函数。
从课堂内使用:
self::getPass($email);
或(对于后期静态绑定):
static::getPass($email);
来自课外:
userAuthentication::getPass($email);
该行应该是:
self::verify($someVar, self::getPass($_COOKIE['email']);