从同一个类中的函数调用PHP类中的函数

时间:2012-03-15 00:25:16

标签: php class

由于我无法知道如何调用与另一个函数位于同一类中的函数,因此下面的代码将无法运行。我已经尝试使用$this,但它给了我一个PHP错误Using $this when not in object context...Line 25。我不知道如何解决这个问题,我希望别人可以给我一些关于该怎么做的提示。我的代码如下,谢谢:)

class SESSION {
    function start() {
        session_start();
    }
    function check() {
        if ($_SESSION["username"]) {
            return $_SESSION["username"];
        } else {
            return "nli"; //Not logged in :(
        }
    }
    function set_session($username) {
        $_SESSION["username"] = $username;
    }
    function login($username, $password) {
        $database = DB::connect();
        $passwordsha = sha1($password);
        $query = "";
        $res = $database->query($query);
        $num = $res->num_rows;
        if ($num == 0) {
            header("Location: login.php?e=1");
        } elseif ($num == 1) {
            $this->set_session($username);
            header("Location: admin.php");
        } else {
            header("Location: login.php?e=2");
        }
    }
}

3 个答案:

答案 0 :(得分:9)

  

不,我没有创建对象

这就是调用$this->set_session($username);失败的原因,如果你想遵循相同的代码模式,你可以这样做:

if ($num == 0) {
    header("Location: login.php?e=1");
} elseif ($num == 1) {
    self::set_session($username);
    header("Location: admin.php");
}

答案 1 :(得分:0)

如果你使用login作为类方法,那么你必须这样写:

SESSION::set_session($username);

答案 2 :(得分:0)

您必须将set_session函数定义为私有。这样您就可以使用 this-> set_session

来引用它
private function set_session($username) {
    $_SESSION["username"] = $username;
}