0

所以我有一个我正在处理的课程来管理 PHP 会话,这是课程:

class SessionManagement {
    public static function sessionStarted() {
        if(session_id() == '') {
            return false;
        } else {
            return true;
        }
    }
    public static function sessionExists($session) {
        if(sessionStarted() == false) {
            session_start();
        }
        if(isset($_SESSION[$session])) {
            return true;
        } else {
            return false;
        }
    }
    public static function setSession($session, $value) {
        if(sessionStarted() != true) {
            session_start();
        }
        $_SESSION[$session] = $value;
        if(sessionExists($session) == false) {
            throw new Exception('Unable to Create Session');
        }
    }
    public static function getSession($session) {
        if(isset($_SESSION[$session])) {
            return $_SESSION[$session];
        } else {
            throw new Exception('Session Does Not Exist');
        }
    }
}

现在尝试这个...

try {
    SessionManagement::setSession('Foo', 'Bar');

    echo SessionManagement::sessionStarted();
    echo SessionManagement::getSession('Foo');
    echo SessionManagement::sessionExists('Foo');
} catch(Exception $e) {
    echo $e->getMessage();
}

...不产生任何输出...我不确定我们在哪里打破...非常感谢任何有用的眼睛...

4

1 回答 1

2

与其他 OO 语言(如 C++)不同,在您的类中 PHP 需要知道调用的静态方法来自对象。对于一个实例化的类,这将是通过$this,在你的情况下,静态方法,这是通过self

class SessionManagement {
    public static function sessionStarted() {
        if(session_id() == '') {
            return false;
        } else {
            return true;
        }
    }
    public static function sessionExists($session) {
        if(self::sessionStarted() == false) {
            session_start();
        }
        if(isset($_SESSION[$session])) {
            return true;
        } else {
            return false;
        }
    }
    public static function setSession($session, $value) {
        if(self::sessionStarted() != true) {
            session_start();
        }
        $_SESSION[$session] = $value;
        if(self::sessionExists($session) == false) {
            throw new Exception('Unable to Create Session');
        }
    }
    public static function getSession($session) {
        if(isset($_SESSION[$session])) {
            return $_SESSION[$session];
        } else {
            throw new Exception('Session Does Not Exist');
        }
    }
}

预先self::SessionManagement静态方法的所有内部调用应该可以解决您的问题。

于 2013-02-13T10:53:40.133 回答